[Telepathy-commits] [telepathy-gabble/master] abstract BytestreamIBB
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Mon Mar 9 08:55:12 PDT 2009
---
tests/twisted/bytestream.py | 39 ++++++++++++++++++++++++++++-----------
1 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/tests/twisted/bytestream.py b/tests/twisted/bytestream.py
index 536c045..7c32292 100644
--- a/tests/twisted/bytestream.py
+++ b/tests/twisted/bytestream.py
@@ -353,7 +353,7 @@ def expect_socks5_reply(q):
##### XEP-0047: In-Band Bytestreams (IBB) #####
-class BytestreamIBBMsg(Bytestream):
+class BytestreamIBB(Bytestream):
def __init__(self, stream, q, sid, initiator, target, initiated):
Bytestream.__init__(self, stream, q, sid, initiator, target, initiated)
@@ -377,6 +377,9 @@ class BytestreamIBBMsg(Bytestream):
return events_before, events_after
+ def _send(self, from_, to, data):
+ raise NotImplemented
+
def send_data(self, data):
if self.initiated:
from_ = self.initiator
@@ -385,15 +388,7 @@ class BytestreamIBBMsg(Bytestream):
from_ = self.target
to = self.initiator
- message = domish.Element(('jabber:client', 'message'))
- message['to'] = to
- message['from'] = from_
- data_node = message.addElement((ns.IBB, 'data'))
- data_node['sid'] = self.stream_id
- data_node['seq'] = str(self.seq)
- data_node.addContent(base64.b64encode(data))
- self.stream.send(message)
-
+ self._send(from_, to, data)
self.seq += 1
def wait_bytestream_open(self):
@@ -407,7 +402,7 @@ class BytestreamIBBMsg(Bytestream):
acknowledge_iq(self.stream, event.stanza)
def get_data(self):
- # wait for IBB stanzas
+ # wait for IBB stanza. Gabble always use messages
ibb_event = self.q.expect('stream-message')
data_nodes = xpath.queryForNodes('/message/data[@xmlns="%s"]' % ns.IBB,
@@ -426,6 +421,28 @@ class BytestreamIBBMsg(Bytestream):
# sender finish to send the file and so close the bytestream
acknowledge_iq(self.stream, close_event.stanza)
+class BytestreamIBBMsg(BytestreamIBB):
+ def _send(self, from_, to, data):
+ message = domish.Element(('jabber:client', 'message'))
+ message['to'] = to
+ message['from'] = from_
+ data_node = message.addElement((ns.IBB, 'data'))
+ data_node['sid'] = self.stream_id
+ data_node['seq'] = str(self.seq)
+ data_node.addContent(base64.b64encode(data))
+ self.stream.send(message)
+
+ def _wait_data_event(self):
+ ibb_event = self.q.expect('stream-message')
+
+ data_nodes = xpath.queryForNodes('/message/data[@xmlns="%s"]' % ns.IBB,
+ ibb_event.stanza)
+ assert data_nodes is not None
+ assert len(data_nodes) == 1
+ ibb_data = data_nodes[0]
+ assert ibb_data['sid'] == self.stream_id
+ return str(ibb_data), ibb_data['sid']
+
##### SI Fallback (Gabble specific extension) #####
class BytestreamSIFallback(Bytestream):
--
1.5.6.5
More information about the telepathy-commits
mailing list