annotate sat_frontends/jp/cmd_ping.py @ 2691:1ecceac3df96

plugin XEP-0198: Stream Management implementation: - hooks can now be set in stream onElement and send methods - xmllog refactored to use new hooks - client.isConnected now uses transport.connected method - fixed reconnection, SàT will now try to reconnect indefinitely until it success, unresolvable failure happen (e.g. invalid certificate), or explicit disconnection is requested (or a plugin change this behaviour) - new triggers: "stream_hooks", "disconnecting", "disconnected", and "xml_init" (replace "XML Initialized")
author Goffi <goffi@goffi.org>
date Sun, 18 Nov 2018 15:49:46 +0100
parents 56bfe1b79204
children 003b8b4b56a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2690
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
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
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org)
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
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
20 import base
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from sat.core.i18n import _
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
22
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
23 __commands__ = ["Ping"]
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
24
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 class Ping(base.CommandBase):
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
27
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
28 def __init__(self, host):
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
29 super(Ping, self).__init__(host, 'ping', help=_('ping XMPP entity'))
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
30 self.need_loop=True
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
31
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
32 def add_parser_options(self):
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
33 self.parser.add_argument(
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
34 "jid", type=base.unicode_decoder, help=_(u"jid to ping")
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 self.parser.add_argument(
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
37 "-d", "--delay-only", action="store_true", help=_(u"output delay only (in s)")
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
38 )
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
39
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
40 def _pingCb(self, pong_time):
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
41 fmt = u"{time}" if self.args.delay_only else u"PONG ({time} s)"
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
42 self.disp(fmt.format(time=pong_time))
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
43 self.host.quit()
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
44
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
45 def start(self):
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
46 self.host.bridge.ping(self.args.jid, self.profile,
56bfe1b79204 jp: new command "ping"
Goffi <goffi@goffi.org>
parents:
diff changeset
47 callback=self._pingCb, errback=self.errback)