Author: rhs
Date: Thu Aug  9 16:58:41 2007
New Revision: 564434

URL: http://svn.apache.org/viewvc?view=rev&rev=564434
Log:
split invoke out into two distinct version specific impls

Modified:
    incubator/qpid/trunk/qpid/python/qpid/peer.py

Modified: incubator/qpid/trunk/qpid/python/qpid/peer.py
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/peer.py?view=diff&rev=564434&r1=564433&r2=564434
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/peer.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/peer.py Thu Aug  9 16:58:41 2007
@@ -191,7 +191,10 @@
     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 @@
     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)
+    return self.invoker(frame, content)
 
-      except QueueClosed, e:
+  # 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)
 


Reply via email to