summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2007-08-09 23:58:41 +0000
committerRafael H. Schloming <rhs@apache.org>2007-08-09 23:58:41 +0000
commit66587b44196d5131d6be81207c1b3c248092eadb (patch)
tree00ddc9aa894557bbc70503cbede6edb82c7b793a /python
parentb7622dce16b72a182c8727f4364735691c4d7017 (diff)
downloadqpid-python-66587b44196d5131d6be81207c1b3c248092eadb.tar.gz
split invoke out into two distinct version specific impls
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@564434 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
-rw-r--r--python/qpid/peer.py61
1 files changed, 33 insertions, 28 deletions
diff --git a/python/qpid/peer.py b/python/qpid/peer.py
index 11246588d9..03c48bef90 100644
--- a/python/qpid/peer.py
+++ b/python/qpid/peer.py
@@ -191,7 +191,10 @@ class Channel:
self.incoming_completion = IncomingCompletion(self)
# Use reliable framing if version == 0-9.
- self.reliable = (spec.major == 0 and spec.minor == 9)
+ if spec.major == 0 and spec.minor == 9:
+ self.invoker = self.invoke_reliable
+ else:
+ self.invoker = self.invoke_method
self.use_execution_layer = (spec.major == 0 and spec.minor == 10)
self.synchronous = True
@@ -260,36 +263,38 @@ class Channel:
self.completion.next_command(type)
content = kwargs.pop("content", None)
frame = Method(type, type.arguments(*args, **kwargs))
- if self.reliable:
- if not self.synchronous:
- future = Future()
- self.request(frame, future.put_response, content)
- if not frame.method.responses: return None
- else: return future
-
- self.request(frame, self.queue_response, content)
- if not frame.method.responses:
- if self.use_execution_layer and type.is_l4_command():
- self.execution_flush()
- self.completion.wait()
- if self.closed:
- raise Closed(self.reason)
- return None
- try:
- resp = self.responses.get()
- if resp.method_type.content:
- return Message(self, resp, read_content(self.responses))
- else:
- return Message(self, resp)
-
- except QueueClosed, e:
+ return self.invoker(frame, content)
+
+ # used for 0-9
+ def invoke_reliable(self, frame, content = None):
+ if not self.synchronous:
+ future = Future()
+ self.request(frame, future.put_response, content)
+ if not frame.method.responses: return None
+ else: return future
+
+ self.request(frame, self.queue_response, content)
+ if not frame.method.responses:
+ if self.use_execution_layer and type.is_l4_command():
+ self.execution_flush()
+ self.completion.wait()
if self.closed:
raise Closed(self.reason)
- else:
- raise e
- else:
- return self.invoke_method(frame, content)
+ return None
+ try:
+ resp = self.responses.get()
+ if resp.method_type.content:
+ return Message(self, resp, read_content(self.responses))
+ else:
+ return Message(self, resp)
+
+ except QueueClosed, e:
+ if self.closed:
+ raise Closed(self.reason)
+ else:
+ raise e
+ # used for 0-8 and 0-10
def invoke_method(self, frame, content = None):
self.write(frame, content)