summaryrefslogtreecommitdiff
path: root/python/qpid/connection.py
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2007-09-12 13:11:52 +0000
committerAndrew Stitcher <astitcher@apache.org>2007-09-12 13:11:52 +0000
commit86255826a849d7d8ced73009274a5bee909a0923 (patch)
tree7da5fb95bdb312c41801d69b04a6d5c87494e4c1 /python/qpid/connection.py
parente69abcd0ae75a32c6a618c9b86a8a550fb4a8db7 (diff)
downloadqpid-python-86255826a849d7d8ced73009274a5bee909a0923.tar.gz
* Python: reinstated 0-8 framing in parallel with the new 0-10 framing
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@574936 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/connection.py')
-rw-r--r--python/qpid/connection.py36
1 files changed, 33 insertions, 3 deletions
diff --git a/python/qpid/connection.py b/python/qpid/connection.py
index 11a0d3ec6a..3ae88979fd 100644
--- a/python/qpid/connection.py
+++ b/python/qpid/connection.py
@@ -77,7 +77,9 @@ class Connection:
self.codec = codec.Codec(io, spec)
self.spec = spec
self.FRAME_END = self.spec.constants.byname["frame_end"].id
-
+ self.write = getattr(self, "write_%s_%s" % (self.spec.major, self.spec.minor))
+ self.read = getattr(self, "read_%s_%s" % (self.spec.major, self.spec.minor))
+
def flush(self):
self.codec.flush()
@@ -89,8 +91,36 @@ class Connection:
def tini(self):
self.codec.unpack(Connection.INIT)
+
+ def write_8_0(self, frame):
+ c = self.codec
+ c.encode_octet(self.spec.constants.byname[frame.type].id)
+ c.encode_short(frame.channel)
+ body = StringIO()
+ enc = codec.Codec(body, self.spec)
+ frame.encode(enc)
+ enc.flush()
+ c.encode_longstr(body.getvalue())
+ c.encode_octet(self.FRAME_END)
+
+ def read_8_0(self):
+ c = self.codec
+ type = self.spec.constants.byid[c.decode_octet()].name
+ channel = c.decode_short()
+ body = c.decode_longstr()
+ dec = codec.Codec(StringIO(body), self.spec)
+ frame = Frame.DECODERS[type].decode(self.spec, dec, len(body))
+ frame.channel = channel
+ end = c.decode_octet()
+ if end != self.FRAME_END:
+ garbage = ""
+ while end != self.FRAME_END:
+ garbage += chr(end)
+ end = c.decode_octet()
+ raise "frame error: expected %r, got %r" % (self.FRAME_END, garbage)
+ return frame
- def write(self, frame):
+ def write_0_10(self, frame):
c = self.codec
c.encode_octet(0x0f) # TODO: currently fixed at ver=0, B=E=b=e=1
c.encode_octet(self.spec.constants.byname[frame.type].id)
@@ -107,7 +137,7 @@ class Connection:
c.write(body.getvalue())
c.encode_octet(self.FRAME_END)
- def read(self):
+ def read_0_10(self):
c = self.codec
flags = c.decode_octet() # TODO: currently ignoring flags
framing_version = (flags & 0xc0) >> 6