diff options
author | Joe Hildebrand <joe-github@cursive.net> | 2012-10-29 10:03:32 -0600 |
---|---|---|
committer | Joe Hildebrand <joe-github@cursive.net> | 2012-10-29 10:03:32 -0600 |
commit | 75a18b5ffe9057e234403e54a16e24bb2cc7ba25 (patch) | |
tree | 8757c7eafec0ae2c27f02ce4391b5dee6b86cb07 /sleekxmpp/plugins/xep_0030/disco.py | |
parent | 06a690a2592cba388877391935ed4168d101a231 (diff) | |
download | slixmpp-75a18b5ffe9057e234403e54a16e24bb2cc7ba25.tar.gz slixmpp-75a18b5ffe9057e234403e54a16e24bb2cc7ba25.tar.bz2 slixmpp-75a18b5ffe9057e234403e54a16e24bb2cc7ba25.tar.xz slixmpp-75a18b5ffe9057e234403e54a16e24bb2cc7ba25.zip |
Allow IQ timeouts to be asynchronous, by passing a timeout_callback parameter to send(). An example modification of disco is included. If this approach is approved, I'll go through and update the other plugins.
Diffstat (limited to 'sleekxmpp/plugins/xep_0030/disco.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0030/disco.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sleekxmpp/plugins/xep_0030/disco.py b/sleekxmpp/plugins/xep_0030/disco.py index 278b4a34..8a397923 100644 --- a/sleekxmpp/plugins/xep_0030/disco.py +++ b/sleekxmpp/plugins/xep_0030/disco.py @@ -324,6 +324,8 @@ class XEP_0030(BasePlugin): callback -- Optional callback to execute when a reply is received instead of blocking and waiting for the reply. + timeout_callback -- Optional callback to execute when no result + has been received in timeout seconds. """ if local is None: if jid is not None and not isinstance(jid, JID): @@ -364,7 +366,8 @@ class XEP_0030(BasePlugin): iq['disco_info']['node'] = node if node else '' return iq.send(timeout=kwargs.get('timeout', None), block=kwargs.get('block', True), - callback=kwargs.get('callback', None)) + callback=kwargs.get('callback', None), + timeout_callback=kwargs.get('timeout_callback', None)) def set_info(self, jid=None, node=None, info=None): """ @@ -405,6 +408,8 @@ class XEP_0030(BasePlugin): iterator -- If True, return a result set iterator using the XEP-0059 plugin, if the plugin is loaded. Otherwise the parameter is ignored. + timeout_callback -- Optional callback to execute when no result + has been received in timeout seconds. """ if local or local is None and jid is None: items = self.api['get_items'](jid, node, @@ -423,7 +428,8 @@ class XEP_0030(BasePlugin): else: return iq.send(timeout=kwargs.get('timeout', None), block=kwargs.get('block', True), - callback=kwargs.get('callback', None)) + callback=kwargs.get('callback', None), + timeout_callback=kwargs.get('timeout_callback', None)) def set_items(self, jid=None, node=None, **kwargs): """ |