summaryrefslogtreecommitdiff
path: root/python/qpid/framer.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-04-22 16:11:34 +0000
committerRafael H. Schloming <rhs@apache.org>2008-04-22 16:11:34 +0000
commite06aa805cfe24b8edf619a6a535883f94589ac35 (patch)
tree4b886461816ca97127aae8a9639ddad74d77bd46 /python/qpid/framer.py
parent61959e29ee69f9cebb61b845272eededaec6f11e (diff)
downloadqpid-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.py26
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)