summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2010-10-01 10:46:37 -0400
committerLance Stout <lancestout@gmail.com>2010-10-01 10:46:37 -0400
commit5522443e0e122093080032037a783ab3d2718d3f (patch)
tree42ef29b752991f6e05170a83bfccbdae5badf540 /sleekxmpp/xmlstream
parent55cfe69fefde4cbb1b10f2518f94f652db819d38 (diff)
downloadslixmpp-5522443e0e122093080032037a783ab3d2718d3f.tar.gz
slixmpp-5522443e0e122093080032037a783ab3d2718d3f.tar.bz2
slixmpp-5522443e0e122093080032037a783ab3d2718d3f.tar.xz
slixmpp-5522443e0e122093080032037a783ab3d2718d3f.zip
Moved getNewId and getId to XMLStream.
This prepares the way for moving add_handler to XMLStream. Since stanzas, matchers, and handlers in any XML stream will typically use unique IDs, XMLStream is a good place for these methods.
Diffstat (limited to 'sleekxmpp/xmlstream')
-rw-r--r--sleekxmpp/xmlstream/xmlstream.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py
index d37d2920..5531b1d2 100644
--- a/sleekxmpp/xmlstream/xmlstream.py
+++ b/sleekxmpp/xmlstream/xmlstream.py
@@ -101,7 +101,9 @@ class XMLStream(object):
disconnect -- Disconnect from the server and terminate
processing.
event -- Trigger a custom event.
+ get_id -- Return the current stream ID.
incoming_filter -- Optionally filter stanzas before processing.
+ new_id -- Generate a new, unique ID value.
process -- Read XML stanzas from the stream and apply
matching stream handlers.
reconnect -- Reestablish a connection to the server.
@@ -144,6 +146,8 @@ class XMLStream(object):
self.removeHandler = self.remove_handler
self.setSocket = self.set_socket
self.sendRaw = self.send_raw
+ self.getId = self.get_id
+ self.getNewId = self.new_id
self.ssl_support = SSL_SUPPORT
@@ -178,8 +182,29 @@ class XMLStream(object):
self.__root_stanza = []
self.__handlers = []
+ self._id = 0
+ self._id_lock = threading.Lock()
+
self.run = True
+ def new_id(self):
+ """
+ Generate and return a new stream ID in hexadecimal form.
+
+ Many stanzas, handlers, or matchers may require unique
+ ID values. Using this method ensures that all new ID values
+ are unique in this stream.
+ """
+ with self._id_lock:
+ self._id += 1
+ return self.get_id()
+
+ def get_id(self):
+ """
+ Return the current unique stream ID in hexadecimal form.
+ """
+ return "%X" % self._id
+
def connect(self, host='', port=0, use_ssl=False,
use_tls=True, reattempt=True):
"""