diff options
author | Charles E. Rolke <chug@apache.org> | 2012-11-07 21:10:11 +0000 |
---|---|---|
committer | Charles E. Rolke <chug@apache.org> | 2012-11-07 21:10:11 +0000 |
commit | 1d70e45d522dd2b9f71ef4dc8b8adb4c5caa849e (patch) | |
tree | 6cdddb3b5c2c3894c88702db5027f180264b563a | |
parent | 40844ad298af4cca6c60dfde29397f672fc05416 (diff) | |
download | qpid-python-1d70e45d522dd2b9f71ef4dc8b8adb4c5caa849e.tar.gz |
QPID-4423 C++ Broker federated bridge creation should not declare named queues.
Named queues are assumed to exist and should not be declared during bridge creation.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1406809 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | cpp/src/qpid/broker/Bridge.cpp | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/cpp/src/qpid/broker/Bridge.cpp b/cpp/src/qpid/broker/Bridge.cpp index d2f077af1e..4b4954a0df 100644 --- a/cpp/src/qpid/broker/Bridge.cpp +++ b/cpp/src/qpid/broker/Bridge.cpp @@ -121,28 +121,30 @@ void Bridge::create(Connection& c) peer->getMessage().flow(args.i_dest, 1, 0xFFFFFFFF); QPID_LOG(debug, "Activated bridge " << name << " for route from queue " << args.i_src << " to " << args.i_dest); } else { - FieldTable queueSettings; - - if (args.i_tag.size()) { - queueSettings.setString("qpid.trace.id", args.i_tag); - } else { - const string& peerTag = c.getFederationPeerTag(); - if (peerTag.size()) - queueSettings.setString("qpid.trace.id", peerTag); - } - - if (args.i_excludes.size()) { - queueSettings.setString("qpid.trace.exclude", args.i_excludes); - } else { - const string& localTag = link->getBroker()->getFederationTag(); - if (localTag.size()) - queueSettings.setString("qpid.trace.exclude", localTag); + if (!useExistingQueue) { + FieldTable queueSettings; + + if (args.i_tag.size()) { + queueSettings.setString("qpid.trace.id", args.i_tag); + } else { + const string& peerTag = c.getFederationPeerTag(); + if (peerTag.size()) + queueSettings.setString("qpid.trace.id", peerTag); + } + + if (args.i_excludes.size()) { + queueSettings.setString("qpid.trace.exclude", args.i_excludes); + } else { + const string& localTag = link->getBroker()->getFederationTag(); + if (localTag.size()) + queueSettings.setString("qpid.trace.exclude", localTag); + } + + bool durable = false;//should this be an arg, or would we use srcIsQueue for durable queues? + bool exclusive = true; // only exclusive if the queue is owned by the bridge + bool autoDelete = exclusive && !durable;//auto delete transient queues? + peer->getQueue().declare(queueName, altEx, false, durable, exclusive, autoDelete, queueSettings); } - - bool durable = false;//should this be an arg, or would we use srcIsQueue for durable queues? - bool exclusive = !useExistingQueue; // only exclusive if the queue is owned by the bridge - bool autoDelete = exclusive && !durable;//auto delete transient queues? - peer->getQueue().declare(queueName, altEx, false, durable, exclusive, autoDelete, queueSettings); if (!args.i_dynamic) peer->getExchange().bind(queueName, args.i_src, args.i_key, FieldTable()); peer->getMessage().subscribe(queueName, args.i_dest, (useExistingQueue && args.i_sync) ? 0 : 1, 0, false, "", 0, options); |