-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/22630/
-----------------------------------------------------------
(Updated July 4, 2014, 10:48 a.m.)
Review request for qpid, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael
Schloming.
Changes
-------
New patch proposal, with Alan's idea of MangledString class implemented (it
gets really easier, thanks!).
Bugs: QPID-5823
https://issues.apache.org/jira/browse/QPID-5823
Repository: qpid
Description
-------
The easiest "solution" would be to do the "mangling" in parse_address method in
driver.py (see original https://svn.apache.org/r1602820 I reverted). That
prevents any application to get proper node address ('#' expanded).
So the '#' expansion needs to be done in endpoints.py and the information
"address is expanded" needs to be passed to parse_address method. Either using
[Sender|Receiver].mangled boolean (like in attached patch) or Sender.target /
Receiver.source could be a double (address_string, mangled), like _mangle
method returns in the patch. I don't know what approach (or some combination)
is better.
FYI C++ client has similar code:
if (qpid::messaging::AddressImpl::isTemporary(a) && createPolicy.isVoid()) {
createPolicy = "always";
Opt specified = Opt(a)/NODE/X_DECLARE;
if (!specified.hasKey(AUTO_DELETE)) autoDelete = true;
if (!specified.hasKey(EXCLUSIVE)) exclusive = true;
}
where isTemporary(a)==true iff node name starts with '#'.
Diffs (updated)
-----
/trunk/qpid/python/qpid/messaging/driver.py 1607804
/trunk/qpid/python/qpid/messaging/endpoints.py 1607804
Diff: https://reviews.apache.org/r/22630/diff/
Testing
-------
Automated tests passed.
Manual test passed as well:
$ drain "#q; {node: {durable:true}}" -t 2 & qpid-stat -q
[1] 25174
c17af530-6cd8-462d-b8e8-5e4b6c9d50f8#q; {node: {durable:true}}
Queues
queue dur autoDel excl msg msgIn
msgOut bytes bytesIn bytesOut cons bind
=========================================================================================================================
af192c4d-b2a0-47c3-8dd4-e99f400da51d:0.0 Y Y 0 0
0 0 0 0 1 2
c17af530-6cd8-462d-b8e8-5e4b6c9d50f8#q Y Y Y 0 0
0 0 0 0 1 1
$
(the same for spout)
receiver / producer is able to print expanded address (see the
"c17af530-6cd8-462d-b8e8-5e4b6c9d50f8#q; {node: {durable:true}}" line).
Thanks,
Pavel Moravec