You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2013/02/12 13:12:14 UTC

svn commit: r1445121 - in /qpid/proton/trunk: proton-c/bindings/python/proton.py tests/python/proton_tests/engine.py

Author: rhs
Date: Tue Feb 12 12:12:14 2013
New Revision: 1445121

URL: http://svn.apache.org/r1445121
Log:
modified connection binding to auto encode/decode capabilities

Modified:
    qpid/proton/trunk/proton-c/bindings/python/proton.py
    qpid/proton/trunk/tests/python/proton_tests/engine.py

Modified: qpid/proton/trunk/proton-c/bindings/python/proton.py
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/python/proton.py?rev=1445121&r1=1445120&r2=1445121&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/trunk/proton-c/bindings/python/proton.py Tue Feb 12 12:12:14 2013
@@ -1608,9 +1608,12 @@ class Data:
       return Array(descriptor, type, *elements)
 
   def put_py_array(self, a):
-    self.put_array(a.descriptor != UNDESCRIBED, a.type)
+    described = a.descriptor != UNDESCRIBED
+    self.put_array(described, a.type)
     self.enter()
     try:
+      if described:
+        self.put_object(a.descriptor)
       for e in a.elements:
         self.put_object(e)
     finally:
@@ -1674,7 +1677,6 @@ class Data:
     if getter:
       return getter(self)
     else:
-      self.dump()
       return UnmappedType(str(type))
 
 
@@ -1750,6 +1752,8 @@ class Connection(Endpoint):
     else:
       self._conn = pn_connection()
       pn_connection_set_context(self._conn, self)
+    self.offered_capabilities = None
+    self.desired_capabilities = None
 
   def __del__(self):
     if hasattr(self, "_conn"):
@@ -1791,23 +1795,32 @@ class Connection(Endpoint):
   def remote_hostname(self):
     return pn_connection_remote_hostname(self._conn)
 
-  @property
-  def offered_capabilities(self):
-    return Data(pn_connection_offered_capabilities(self._conn))
-
-  @property
-  def desired_capabilities(self):
-    return Data(pn_connection_desired_capabilities(self._conn))
+  def _dat2cap(self, dimpl):
+    d = Data(dimpl)
+    d.rewind()
+    d.next()
+    obj = d.get_object()
+    d.rewind()
+    return obj
 
   @property
   def remote_offered_capabilities(self):
-    return Data(pn_connection_remote_offered_capabilities(self._conn))
+    return self._dat2cap(pn_connection_remote_offered_capabilities(self._conn))
 
   @property
   def remote_desired_capabilities(self):
-    return Data(pn_connection_remote_desired_capabilities(self._conn))
+    return self._dat2cap(pn_connection_remote_desired_capabilities(self._conn))
+
+  def _cap2data(self, obj, dimpl):
+    if obj is not None:
+      d = Data(dimpl)
+      d.put_object(obj)
 
   def open(self):
+    self._cap2data(self.offered_capabilities,
+                   pn_connection_offered_capabilities(self._conn))
+    self._cap2data(self.desired_capabilities,
+                   pn_connection_desired_capabilities(self._conn))
     pn_connection_open(self._conn)
 
   def close(self):

Modified: qpid/proton/trunk/tests/python/proton_tests/engine.py
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/tests/python/proton_tests/engine.py?rev=1445121&r1=1445120&r2=1445121&view=diff
==============================================================================
--- qpid/proton/trunk/tests/python/proton_tests/engine.py (original)
+++ qpid/proton/trunk/tests/python/proton_tests/engine.py Tue Feb 12 12:12:14 2013
@@ -160,29 +160,26 @@ class ConnectionTest(Test):
     assert self.c2.state == Endpoint.LOCAL_CLOSED | Endpoint.REMOTE_CLOSED
 
   def test_capabilities(self):
-    self.c1.offered_capabilities.put_array(False, Data.SYMBOL)
-    self.c1.offered_capabilities.enter()
-    self.c1.offered_capabilities.put_symbol("O_one")
-    self.c1.offered_capabilities.put_symbol("O_two")
-    self.c1.offered_capabilities.put_symbol("O_three")
-    self.c1.offered_capabilities.exit()
-
-    self.c1.desired_capabilities.put_array(False, Data.SYMBOL)
-    self.c1.desired_capabilities.enter()
-    self.c1.desired_capabilities.put_symbol("D_one")
-    self.c1.desired_capabilities.put_symbol("D_two")
-    self.c1.desired_capabilities.put_symbol("D_three")
-    self.c1.desired_capabilities.exit()
-
+    self.c1.offered_capabilities = Array(UNDESCRIBED, Data.SYMBOL,
+                                         symbol("O_one"),
+                                         symbol("O_two"),
+                                         symbol("O_three"))
+
+    self.c1.desired_capabilities = Array(UNDESCRIBED, Data.SYMBOL,
+                                         symbol("D_one"),
+                                         symbol("D_two"),
+                                         symbol("D_three"))
     self.c1.open()
 
-    assert self.c2.remote_offered_capabilities.format() == ""
-    assert self.c2.remote_desired_capabilities.format() == ""
+    assert self.c2.remote_offered_capabilities is None
+    assert self.c2.remote_desired_capabilities is None
 
     self.pump()
 
-    assert self.c2.remote_offered_capabilities.format() == self.c1.offered_capabilities.format()
-    assert self.c2.remote_desired_capabilities.format() == self.c1.desired_capabilities.format()
+    assert self.c2.remote_offered_capabilities == self.c1.offered_capabilities, \
+        (self.c2.remote_offered_capabilities, self.c1.offered_capabilities)
+    assert self.c2.remote_desired_capabilities == self.c1.desired_capabilities, \
+        (self.c2.remote_desired_capabilities, self.c1.desired_capabilities)
 
   def test_condition(self):
     self.c1.open()



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org