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

View File

@ -2,7 +2,7 @@ import re
import base64 import base64
from sleekxmpp.exceptions import XMPPError 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 from sleekxmpp.thirdparty.suelta.util import bytes
@ -12,6 +12,7 @@ VALID_B64 = re.compile(r'[A-Za-z0-9\+\/]*=*')
def to_b64(data): def to_b64(data):
return bytes(base64.b64encode(bytes(data))).decode('utf-8') return bytes(base64.b64encode(bytes(data))).decode('utf-8')
def from_b64(data): def from_b64(data):
return bytes(base64.b64decode(bytes(data))).decode('utf-8') 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._send_seq_lock = threading.Lock()
self._recv_seq_lock = threading.Lock() self._recv_seq_lock = threading.Lock()
self.stream_started = threading.Event() self.stream_started = threading.Event()
self.stream_in_closed = threading.Event() self.stream_in_closed = threading.Event()
self.stream_out_closed = threading.Event() self.stream_out_closed = threading.Event()
@ -55,7 +55,7 @@ class IBBytestream(object):
iq['from'] = self.sender iq['from'] = self.sender
iq['ibb_data']['sid'] = self.sid iq['ibb_data']['sid'] = self.sid
iq['ibb_data']['seq'] = seq iq['ibb_data']['seq'] = seq
iq['ibb_data']['data'] = data iq['ibb_data']['data'] = data
self.window_empty.clear() self.window_empty.clear()
self.window_ids.add(iq['id']) self.window_ids.add(iq['id'])
iq.send(block=False, callback=self._recv_ack) iq.send(block=False, callback=self._recv_ack)
@ -113,7 +113,7 @@ class IBBytestream(object):
iq['from'] = self.sender iq['from'] = self.sender
iq['ibb_close']['sid'] = self.sid iq['ibb_close']['sid'] = self.sid
self.stream_out_closed.set() self.stream_out_closed.set()
iq.send(block=False, iq.send(block=False,
callback=lambda x: self.stream_in_closed.set()) callback=lambda x: self.stream_in_closed.set())
self.xmpp.event('ibb_stream_end', self) self.xmpp.event('ibb_stream_end', self)