diff options
author | Rafael H. Schloming <rhs@apache.org> | 2008-04-22 16:11:34 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2008-04-22 16:11:34 +0000 |
commit | e06aa805cfe24b8edf619a6a535883f94589ac35 (patch) | |
tree | 4b886461816ca97127aae8a9639ddad74d77bd46 /python/qpid/framer.py | |
parent | 61959e29ee69f9cebb61b845272eededaec6f11e (diff) | |
download | qpid-python-e06aa805cfe24b8edf619a6a535883f94589ac35.tar.gz |
QPID-947: update cpp and python management to 0-10 final
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@650565 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/framer.py')
-rw-r--r-- | python/qpid/framer.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/python/qpid/framer.py b/python/qpid/framer.py index 11fe385d46..fb0e677cee 100644 --- a/python/qpid/framer.py +++ b/python/qpid/framer.py @@ -19,6 +19,7 @@ import struct, socket from packer import Packer +from threading import Lock from logging import getLogger raw = getLogger("qpid.io.raw") @@ -75,6 +76,7 @@ class Framer(Packer): def __init__(self, sock): self.sock = sock + self.sock_lock = Lock() def aborted(self): return False @@ -116,16 +118,24 @@ class Framer(Packer): return self.unpack(Framer.HEADER) def write_header(self, major, minor): - self.pack(Framer.HEADER, "AMQP", 1, 1, major, minor) + self.sock_lock.acquire() + try: + self.pack(Framer.HEADER, "AMQP", 1, 1, major, minor) + finally: + self.sock_lock.release() def write_frame(self, frame): - size = len(frame.payload) + struct.calcsize(Frame.HEADER) - track = frame.track & 0x0F - self.pack(Frame.HEADER, frame.flags, frame.type, size, track, frame.channel) - self.write(frame.payload) - # XXX: NOT 0-10 FINAL, TEMPORARY WORKAROUND for C++ - self.write("\xCE") - frm.debug("SENT %s", frame) + self.sock_lock.acquire() + try: + size = len(frame.payload) + struct.calcsize(Frame.HEADER) + track = frame.track & 0x0F + self.pack(Frame.HEADER, frame.flags, frame.type, size, track, frame.channel) + self.write(frame.payload) + # XXX: NOT 0-10 FINAL, TEMPORARY WORKAROUND for C++ + self.write("\xCE") + frm.debug("SENT %s", frame) + finally: + self.sock_lock.release() def read_frame(self): flags, type, size, track, channel = self.unpack(Frame.HEADER) |