summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-03-06 16:23:14 +0000
committerRafael H. Schloming <rhs@apache.org>2009-03-06 16:23:14 +0000
commit8f03d7e9b257509e5463ff0b2cdbc0a42a5514b2 (patch)
tree2f2c9fdb5795e1b80a4b31236d25a43beac4423a /python
parent14ecef96e4595f3392bd8355a2013d86a06c9e08 (diff)
downloadqpid-python-8f03d7e9b257509e5463ff0b2cdbc0a42a5514b2.tar.gz
added support for encoding buffers
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@750960 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
-rw-r--r--python/qpid/codec010.py6
-rw-r--r--python/qpid/spec010.py1
-rw-r--r--python/tests/codec010.py5
3 files changed, 12 insertions, 0 deletions
diff --git a/python/qpid/codec010.py b/python/qpid/codec010.py
index 62b0f6cf2a..f07362c38d 100644
--- a/python/qpid/codec010.py
+++ b/python/qpid/codec010.py
@@ -118,6 +118,8 @@ class Codec(Packer):
def read_vbin8(self):
return self.read(self.read_uint8())
def write_vbin8(self, b):
+ if isinstance(b, buffer):
+ b = str(b)
self.write_uint8(len(b))
self.write(b)
@@ -140,6 +142,8 @@ class Codec(Packer):
def read_vbin16(self):
return self.read(self.read_uint16())
def write_vbin16(self, b):
+ if isinstance(b, buffer):
+ b = str(b)
self.write_uint16(len(b))
self.write(b)
@@ -163,6 +167,8 @@ class Codec(Packer):
def read_vbin32(self):
return self.read(self.read_uint32())
def write_vbin32(self, b):
+ if isinstance(b, buffer):
+ b = str(b)
self.write_uint32(len(b))
self.write(b)
diff --git a/python/qpid/spec010.py b/python/qpid/spec010.py
index 9a88b88169..2408d01f55 100644
--- a/python/qpid/spec010.py
+++ b/python/qpid/spec010.py
@@ -481,6 +481,7 @@ class Spec(Node):
ENCODINGS = {
unicode: direct("str16"),
str: map_str,
+ buffer: direct("vbin32"),
int: direct("int64"),
long: direct("int64"),
float: direct("float"),
diff --git a/python/tests/codec010.py b/python/tests/codec010.py
index 099734a040..a1f89dc3f4 100644
--- a/python/tests/codec010.py
+++ b/python/tests/codec010.py
@@ -48,6 +48,11 @@ class CodecTest(TestCase):
def testMapBinary(self):
self.check("map", {"binary": "\x7f\xb4R^\xe5\xf0:\x89\x96E1\xf6\xfe\xb9\x1b\xf5"})
+ def testMapBuffer(self):
+ s = "\x7f\xb4R^\xe5\xf0:\x89\x96E1\xf6\xfe\xb9\x1b\xf5"
+ dec = self.check("map", {"buffer": buffer(s)}, False)
+ assert dec["buffer"] == s
+
def testMapInt(self):
self.check("map", {"int": 3})