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