Author: kgiusti
Date: Thu Jun 27 13:15:48 2013
New Revision: 1497342

URL: http://svn.apache.org/r1497342
Log:
PROTON-277: allow dynamic target to have an unspecified address

Modified:
    qpid/proton/trunk/proton-c/src/engine/engine.c
    qpid/proton/trunk/proton-j/proton-api/src/main/resources/proton.py
    qpid/proton/trunk/tests/python/proton_tests/engine.py

Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1497342&r1=1497341&r2=1497342&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Thu Jun 27 13:15:48 2013
@@ -1710,7 +1710,7 @@ int pn_do_attach(pn_dispatcher_t *disp)
   pn_map_handle(ssn, handle, link);
   PN_SET_REMOTE(link->endpoint.state, PN_REMOTE_ACTIVE);
   pn_terminus_t *rsrc = &link->remote_source;
-  if (source.start) {
+  if (source.start || src_dynamic) {
     pn_terminus_set_type(rsrc, PN_SOURCE);
     pn_terminus_set_address_bytes(rsrc, source);
     pn_terminus_set_durability(rsrc, src_dr);
@@ -1721,7 +1721,7 @@ int pn_do_attach(pn_dispatcher_t *disp)
     pn_terminus_set_type(rsrc, PN_UNSPECIFIED);
   }
   pn_terminus_t *rtgt = &link->remote_target;
-  if (target.start) {
+  if (target.start || tgt_dynamic) {
     pn_terminus_set_type(rtgt, PN_TARGET);
     pn_terminus_set_address_bytes(rtgt, target);
     pn_terminus_set_durability(rtgt, tgt_dr);

Modified: qpid/proton/trunk/proton-j/proton-api/src/main/resources/proton.py
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/proton-api/src/main/resources/proton.py?rev=1497342&r1=1497341&r2=1497342&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/proton-api/src/main/resources/proton.py 
(original)
+++ qpid/proton/trunk/proton-j/proton-api/src/main/resources/proton.py Thu Jun 
27 13:15:48 2013
@@ -371,7 +371,6 @@ class Terminus(object):
     self.timeout = None
     self.durability = None
     self.expiry_policy = None
-    self.dynamic = None
     self.properties = DataDummy()
     self.outcomes = DataDummy()
     self.filter = DataDummy()
@@ -391,8 +390,16 @@ class Terminus(object):
     return self.impl.setTimeout(t)
   timeout = property(_get_timeout, _set_timeout)
 
+  def _is_dynamic(self):
+    return self.impl.getDynamic()
+  def _set_dynamic(self, dynamic):
+    self.impl.setDynamic(dynamic)
+  dynamic = property(_is_dynamic, _set_dynamic)
+
   def copy(self, src):
     self.address = src.address
+    self.timeout = src.timeout
+    self.dynamic = src.dynamic
 
 class Sender(Link):
 

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=1497342&r1=1497341&r2=1497342&view=diff
==============================================================================
--- qpid/proton/trunk/tests/python/proton_tests/engine.py (original)
+++ qpid/proton/trunk/tests/python/proton_tests/engine.py Thu Jun 27 13:15:48 
2013
@@ -479,6 +479,11 @@ class LinkTest(Test):
                                             timeout=7,
                                             capabilities=[]))
 
+  def test_dynamic_link(self):
+    self._test_source_target(TerminusConfig(address=None, dynamic=True), None)
+    assert self.rcv.remote_source.dynamic
+    assert self.rcv.remote_source.address is None
+
   def test_condition(self):
     self.snd.open()
     self.rcv.open()
@@ -502,12 +507,13 @@ class LinkTest(Test):
 class TerminusConfig:
 
   def __init__(self, address=None, timeout=None, durability=None, filter=None,
-               capabilities=None):
+               capabilities=None, dynamic=False):
     self.address = address
     self.timeout = timeout
     self.durability = durability
     self.filter = filter
     self.capabilities = capabilities
+    self.dynamic = dynamic
 
   def __call__(self, terminus):
     if self.address is not None:
@@ -527,6 +533,8 @@ class TerminusConfig:
       for (t, v) in self.filter:
         setter = getattr(terminus.filter, "put_%s" % t)
         setter(v)
+    if self.dynamic:
+      terminus.dynamic = True
 
 class TransferTest(Test):
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to