You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2014/04/18 15:39:38 UTC

svn commit: r1588469 - in /qpid/branches/0.28/qpid: ./ python/ python/qpid/framing.py

Author: gsim
Date: Fri Apr 18 13:39:37 2014
New Revision: 1588469

URL: http://svn.apache.org/r1588469
Log:
QPID-5700: ensure interleaved segments on different tracks do not get confused, merged from r1587710

Modified:
    qpid/branches/0.28/qpid/   (props changed)
    qpid/branches/0.28/qpid/python/   (props changed)
    qpid/branches/0.28/qpid/python/qpid/framing.py

Propchange: qpid/branches/0.28/qpid/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid:r1587710

Propchange: qpid/branches/0.28/qpid/python/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/python:r1587710

Modified: qpid/branches/0.28/qpid/python/qpid/framing.py
URL: http://svn.apache.org/viewvc/qpid/branches/0.28/qpid/python/qpid/framing.py?rev=1588469&r1=1588468&r2=1588469&view=diff
==============================================================================
--- qpid/branches/0.28/qpid/python/qpid/framing.py (original)
+++ qpid/branches/0.28/qpid/python/qpid/framing.py Fri Apr 18 13:39:37 2014
@@ -252,31 +252,35 @@ class OpEncoder:
 class OpDecoder:
 
   def __init__(self):
-    self.op = None
+    self.current_op = {}
     self.ops = []
 
   def write(self, *segments):
     for seg in segments:
+      op = self.current_op.get(seg.track)
       if seg.first:
         if seg.type == segment_type.command:
-          self.op = self.decode_command(seg.payload)
+          op = self.decode_command(seg.payload)
         elif seg.type == segment_type.control:
-          self.op = self.decode_control(seg.payload)
+          op = self.decode_control(seg.payload)
         else:
           raise ValueError(seg)
-        self.op.channel = seg.channel
+        op.channel = seg.channel
       elif seg.type == segment_type.header:
-        if self.op.headers is None:
-          self.op.headers = []
-        self.op.headers.extend(self.decode_headers(seg.payload))
+        if op.headers is None:
+          op.headers = []
+        op.headers.extend(self.decode_headers(seg.payload))
       elif seg.type == segment_type.body:
-        if self.op.payload is None:
-          self.op.payload = seg.payload
+        if op.payload is None:
+          op.payload = seg.payload
         else:
-          self.op.payload += seg.payload
+          op.payload += seg.payload
       if seg.last:
-        self.ops.append(self.op)
-        self.op = None
+        self.ops.append(op)
+        if seg.track in self.current_op:
+          del self.current_op[seg.track]
+      else:
+        self.current_op[seg.track] = op
 
   def decode_command(self, encoded):
     sc = StringCodec(encoded)



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org