diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2007-08-09 23:58:41 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2007-08-09 23:58:41 +0000 |
| commit | 66587b44196d5131d6be81207c1b3c248092eadb (patch) | |
| tree | 00ddc9aa894557bbc70503cbede6edb82c7b793a /python | |
| parent | b7622dce16b72a182c8727f4364735691c4d7017 (diff) | |
| download | qpid-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.py | 61 |
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) |
