* converted sleekxmpp to Python 3.x

* 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.
This commit is contained in:
Nathan Fritz
2009-08-31 22:46:31 +00:00
parent 00d46ee2b0
commit 05c9ea5c1d
17 changed files with 110 additions and 143 deletions

View File

@@ -11,6 +11,9 @@ class BaseHandler(object):
def match(self, xml):
return self._matcher.match(xml)
def prerun(self, payload):
self._payload = payload
def run(self, payload):
self._payload = payload

View File

@@ -1,20 +1,26 @@
from . import base
import threading
class Callback(base.BaseHandler):
def __init__(self, name, matcher, pointer, thread=False, once=False):
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):
base.BaseHandler.run(self, payload)
if self._thread:
x = threading.Thread(name="Callback_%s" % self.name, target=self._pointer, args=(payload,))
x.start()
else:
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
if self._once:
self._destroy = True

View File

@@ -1,20 +1,23 @@
from . import base
import Queue
import queue
import logging
class Waiter(base.BaseHandler):
def __init__(self, name, matcher):
base.BaseHandler.__init__(self, name, matcher)
self._payload = Queue.Queue()
self._payload = queue.Queue()
def prerun(self, payload):
self._payload.put(payload)
def run(self, payload):
self._payload.put(payload)
pass
def wait(self, timeout=60):
try:
return self._payload.get(True, timeout)
except Queue.Empty:
except queue.Empty:
return False
def checkDelete(self):

View File

@@ -3,5 +3,5 @@ from . callback import Callback
class XMLCallback(Callback):
def run(self, payload):
Callback.run(self, payload.xml)
def run(self, payload, instream=False):
Callback.run(self, payload.xml, instream)

View File

@@ -2,5 +2,5 @@ from . waiter import Waiter
class XMLWaiter(Waiter):
def run(self, payload):
Waiter.run(self, payload.xml)
def prerun(self, payload):
Waiter.prerun(self, payload.xml)