05c9ea5c1d
* sleekxmpp no longer spawns threads for callback handlers -- there are now two threads: one for handlers and one for reading. callback handlers can get results from the read queue directly with the "wait" handler which is used in .send() for the reply catching argument.
26 lines
739 B
Python
26 lines
739 B
Python
from . import base
|
|
|
|
class Callback(base.BaseHandler):
|
|
|
|
def __init__(self, name, matcher, pointer, thread=False, once=False, instream=False):
|
|
base.BaseHandler.__init__(self, name, matcher)
|
|
self._pointer = pointer
|
|
self._thread = thread
|
|
self._once = once
|
|
self._instream = instream
|
|
|
|
def prerun(self, payload):
|
|
base.BaseHandler.prerun(self, payload)
|
|
if self._instream:
|
|
self.run(payload, True)
|
|
|
|
def run(self, payload, instream=False):
|
|
if not self._instream or instream:
|
|
base.BaseHandler.run(self, payload)
|
|
#if self._thread:
|
|
# x = threading.Thread(name="Callback_%s" % self.name, target=self._pointer, args=(payload,))
|
|
# x.start()
|
|
#else:
|
|
self._pointer(payload)
|
|
if self._once:
|
|
self._destroy = True
|