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]