Move XEP-0047 to new system.

This commit is contained in:
Lance Stout 2012-03-11 21:15:01 -07:00
parent be363e0b46
commit 1f5a3a4445
4 changed files with 22 additions and 14 deletions

View File

@ -6,8 +6,16 @@
See the file LICENSE for copying permission.
"""
from sleekxmpp.plugins.base import register_plugin
from sleekxmpp.plugins.xep_0047 import stanza
from sleekxmpp.plugins.xep_0047.stanza import Open, Close, Data
from sleekxmpp.plugins.xep_0047.stream import IBBytestream
from sleekxmpp.plugins.xep_0047.ibb import xep_0047
from sleekxmpp.plugins.xep_0047.ibb import XEP_0047
register_plugin(XEP_0047)
# Retain some backwards compatibility
xep_0047 = XEP_0047

View File

@ -3,24 +3,25 @@ import logging
import threading
from sleekxmpp import Message, Iq
from sleekxmpp.exceptions import XMPPError, IqError, IqTimeout
from sleekxmpp.exceptions import XMPPError
from sleekxmpp.xmlstream.handler import Callback
from sleekxmpp.xmlstream.matcher import StanzaPath
from sleekxmpp.xmlstream import register_stanza_plugin
from sleekxmpp.plugins.base import base_plugin
from sleekxmpp.plugins import BasePlugin
from sleekxmpp.plugins.xep_0047 import stanza, Open, Close, Data, IBBytestream
log = logging.getLogger(__name__)
class xep_0047(base_plugin):
class XEP_0047(BasePlugin):
name = 'xep_0047'
description = 'XEP-0047: In-band Bytestreams'
dependencies = set(['xep_0030'])
stanza = stanza
def plugin_init(self):
self.xep = '0047'
self.description = 'In-Band Bytestreams'
self.stanza = stanza
self.streams = {}
self.pending_streams = {3: 5}
self.pending_close_streams = {}
@ -50,7 +51,6 @@ class xep_0047(base_plugin):
StanzaPath('iq@type=set/ibb_data'),
self._handle_data))
def post_init(self):
self.xmpp['xep_0030'].add_feature('http://jabber.org/protocol/ibb')
def _accept_stream(self, iq):
@ -97,7 +97,6 @@ class xep_0047(base_plugin):
cb = self._handle_opened_stream
return iq.send(block=block, timeout=timeout, callback=cb)
def _handle_opened_stream(self, iq):
if iq['type'] == 'result':
with self._stream_lock:

View File

@ -2,7 +2,7 @@ import re
import base64
from sleekxmpp.exceptions import XMPPError
from sleekxmpp.xmlstream import register_stanza_plugin, ET, ElementBase
from sleekxmpp.xmlstream import ElementBase
from sleekxmpp.thirdparty.suelta.util import bytes
@ -12,6 +12,7 @@ VALID_B64 = re.compile(r'[A-Za-z0-9\+\/]*=*')
def to_b64(data):
return bytes(base64.b64encode(bytes(data))).decode('utf-8')
def from_b64(data):
return bytes(base64.b64decode(bytes(data))).decode('utf-8')

View File

@ -28,7 +28,7 @@ class IBBytestream(object):
self._send_seq_lock = threading.Lock()
self._recv_seq_lock = threading.Lock()
self.stream_started = threading.Event()
self.stream_in_closed = threading.Event()
self.stream_out_closed = threading.Event()
@ -55,7 +55,7 @@ class IBBytestream(object):
iq['from'] = self.sender
iq['ibb_data']['sid'] = self.sid
iq['ibb_data']['seq'] = seq
iq['ibb_data']['data'] = data
iq['ibb_data']['data'] = data
self.window_empty.clear()
self.window_ids.add(iq['id'])
iq.send(block=False, callback=self._recv_ack)
@ -113,7 +113,7 @@ class IBBytestream(object):
iq['from'] = self.sender
iq['ibb_close']['sid'] = self.sid
self.stream_out_closed.set()
iq.send(block=False,
iq.send(block=False,
callback=lambda x: self.stream_in_closed.set())
self.xmpp.event('ibb_stream_end', self)