annotate sat_frontends/jp/cmd_ping.py @ 4001:32d714a8ea51

plugin XEP-0045: dot not wait for MAM retrieval to be completed: in `_join_MAM`, `room.fully_joined` is called before retrieving the MAM archive, as the process can be very long, and is not necessary to have the room working (message can be received after being in the room, and added out of order). This avoid blocking the `join` workflow for an extended time. Some renaming and coroutine integrations.
author Goffi <goffi@goffi.org>
date Fri, 10 Mar 2023 17:22:41 +0100
parents 04283582966f
children 4b842c1fb686
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
1 #!/usr/bin/env python3
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
3
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # jp: a SAT command line tool
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
6
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
11
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
16
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
19
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
20 from . import base
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.i18n import _
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
22 from sat_frontends.jp.constants import Const as C
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
23
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
24 __commands__ = ["Ping"]
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
25
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
26
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
27 class Ping(base.CommandBase):
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
28 def __init__(self, host):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
29 super(Ping, self).__init__(host, "ping", help=_("ping XMPP entity"))
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
30
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
31 def add_parser_options(self):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
32 self.parser.add_argument("jid", help=_("jid to ping"))
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
33 self.parser.add_argument(
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
34 "-d", "--delay-only", action="store_true", help=_("output delay only (in s)")
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
35 )
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
36
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
37 async def start(self):
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
38 try:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
39 pong_time = await self.host.bridge.ping(self.args.jid, self.profile)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
40 except Exception as e:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
41 self.disp(msg=_("can't do the ping: {e}").format(e=e), error=True)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
42 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
43 else:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
44 msg = pong_time if self.args.delay_only else f"PONG ({pong_time} s)"
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
45 self.disp(msg)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
46 self.host.quit()