summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0030
diff options
context:
space:
mode:
authorJoe Hildebrand <joe-github@cursive.net>2012-10-29 10:03:32 -0600
committerLance Stout <lancestout@gmail.com>2012-10-31 13:27:06 -0700
commit67235c42145ef40d841e9cb7ffa4bbcac490568a (patch)
treed8161d46af6e13075770725e678d71953518e3c1 /sleekxmpp/plugins/xep_0030
parent12e8bb6ddcd686ec9835ba478a112984e65120a1 (diff)
downloadslixmpp-67235c42145ef40d841e9cb7ffa4bbcac490568a.tar.gz
slixmpp-67235c42145ef40d841e9cb7ffa4bbcac490568a.tar.bz2
slixmpp-67235c42145ef40d841e9cb7ffa4bbcac490568a.tar.xz
slixmpp-67235c42145ef40d841e9cb7ffa4bbcac490568a.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')
-rw-r--r--sleekxmpp/plugins/xep_0030/disco.py10
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):
"""