summaryrefslogtreecommitdiff
path: root/python/qpid/peer.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/qpid/peer.py')
-rw-r--r--python/qpid/peer.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/python/qpid/peer.py b/python/qpid/peer.py
index 9880eea19b..d7ae85e345 100644
--- a/python/qpid/peer.py
+++ b/python/qpid/peer.py
@@ -189,7 +189,9 @@ class Channel:
self.completion = ExecutionCompletion()
# Use reliable framing if version == 0-9.
- self.reliable = (spec.major == 0 and spec.minor == 9)
+ # (also for 0-10 while transitioning...)
+ self.reliable = (spec.major == 0 and (spec.minor == 9 or spec.minor == 10))
+ self.use_execution_layer = (spec.major == 0 and spec.minor == 10)
self.synchronous = True
def close(self, reason):
@@ -199,6 +201,7 @@ class Channel:
self.reason = reason
self.incoming.close()
self.responses.close()
+ self.completion.close()
def write(self, frame, content = None):
if self.closed:
@@ -261,6 +264,11 @@ class Channel:
self.request(frame, self.queue_response, content)
if not frame.method.responses:
+ if self.use_execution_layer and type.klass.name != "execution":
+ self.execution_flush()
+ self.completion.wait()
+ if self.closed:
+ raise Closed(self.reason)
return None
try:
resp = self.responses.get()
@@ -353,6 +361,9 @@ class ExecutionCompletion:
if method.klass.name != "execution":
self.command_id = self.sequence.next()
+ def close(self):
+ self.completed.set()
+
def complete(self, mark):
self.mark = mark
self.completed.set()