Changeset 391
- Timestamp:
- 01/10/03 00:54:14 (6 years ago)
- Files:
-
- trunk/RBTelepathy/RBTelepathy/Packet/Builder.py (modified) (1 diff)
- trunk/RBTelepathy/RBTelepathy/Packet/Elements.py (modified) (1 diff)
- trunk/RBTelepathy/RBTelepathy/Packet/StreamElements.py (modified) (3 diffs)
- trunk/RBTelepathy/RBTelepathy/Packet/__init__.py (modified) (1 diff)
- trunk/RBTelepathy/test (added)
- trunk/RBTelepathy/test/test_packet.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBTelepathy/RBTelepathy/Packet/Builder.py
r390 r391 32 32 33 33 class StreamPacketBuilder(XMLClassBuilder): 34 def BuildPacket(self, source, info): 35 packet = self.Parse(info) 36 return packet.OnStreamData 34 BuildPacket = XMLClassBuilder.Parse 37 35 38 36 def _GetOwner(self): trunk/RBTelepathy/RBTelepathy/Packet/Elements.py
r390 r391 55 55 56 56 def _xmlInitComplete(self): 57 self._ datastreamiter = iter(self.datastreams)57 self._OnStreamCurrent = [x for x in self.datastreams] 58 58 59 def OnStreamData(self, source, data): 60 for current in self._datastreamiter: 61 data = current.OnStreamData(source, data) 59 def OnStreamData(self, data, OnPacketComplete=None): 60 while self._OnStreamCurrent: 61 current = self._OnStreamCurrent[0] 62 data = current.OnStreamData(data) 62 63 if data is None: 63 64 return None 64 del self._datastreamiter 65 source.OnPacketComplete(self) 65 else: 66 self._OnStreamCurrent.pop(0) 67 del self._OnStreamCurrent 68 if OnPacketComplete is not None: 69 OnPacketComplete(self) 66 70 return data 67 71 trunk/RBTelepathy/RBTelepathy/Packet/StreamElements.py
r390 r391 62 62 def _xmlInitStarted(self): 63 63 StreamBase._xmlInitStarted(self) 64 self. contentlen = int(self._attributes['size'])64 self.ContentLen = int(self._attributes['size']) 65 65 66 66 def OnUpdateContent(self): … … 68 68 self._attributes['size'] = str(len(self.StreamContent)) 69 69 70 def OnStreamData(self, source,data):71 length = self. contentlen - len(self.StreamContent)70 def OnStreamData(self, data): 71 length = self.ContentLen - len(self.StreamContent) 72 72 if length > len(data): 73 73 self.StreamContent += data 74 74 else: 75 75 self.StreamContent += data[:length] 76 del self.contentlen77 76 return data[length:] 78 77 … … 104 103 self._attributes['ordinal'] = str(ord(self.terminator)) 105 104 106 def OnStreamData(self, source,data):105 def OnStreamData(self, data): 107 106 try: 108 StreamContent, extra = data.split(self.terminator, 1)107 data, extra = data.split(self.terminator, 1) 109 108 except ValueError: 110 109 extra = None 111 self.StreamContent += StreamContent110 self.StreamContent += data 112 111 return extra 113 112 trunk/RBTelepathy/RBTelepathy/Packet/__init__.py
r390 r391 100 100 </msg>''' 101 101 102 class _test(object): 103 def OnPacketComplete(self, packet): 104 self.packet = packet 102 def printit(packet): 103 print 104 print packet.GetStreamInfo() 105 print repr(packet.GetStreamData()) 106 print 107 print 'Stream Content:' 108 for each in packet.datastreams: 109 print ' ', repr(each.StreamContent) 110 print 105 111 106 def printit(self): 107 print 108 print self.packet.GetStreamInfo() 109 print repr(self.packet.GetStreamData()) 110 print 111 print 'Stream Content:' 112 for each in self.packet.datastreams: 113 print ' ', repr(each.StreamContent) 114 print 115 116 t = _test() 117 streamhandler = pb.BuildPacket(t, info) 112 packet = pb.BuildPacket(info) 118 113 119 114 data = '''Some real text\x04ThereAre10@Trash@''' 120 streamhandler(t,data)115 packet.OnStreamData(data) 121 116 122 t.printit()117 printit(packet) 123 118 124 newdata = ['New terminated data', 'New leng ht-based data']125 for stream, nd in zip( t.packet.datastreams, newdata):119 newdata = ['New terminated data', 'New length-based data'] 120 for stream, nd in zip(packet.datastreams, newdata): 126 121 stream.StreamContent = nd 127 122 128 t.printit()123 printit(packet) 129 124 130 125 print "Test complete."
