summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2012-06-15 19:25:59 +0000
committerTed Ross <tross@apache.org>2012-06-15 19:25:59 +0000
commit0e5cd012a1f8dc4269cc192aa081837bc85ba647 (patch)
tree60c62b8404f3d9f88cc17675704320a51157fca1
parentbec6807fcab137d95f942c71a9305f96570ca7b3 (diff)
downloadqpid-python-0e5cd012a1f8dc4269cc192aa081837bc85ba647.tar.gz
QPID-4070 - Minor internal-api changes for LinkRegistry and Bridge (in qpid::broker)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1350746 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/Bridge.cpp9
-rw-r--r--qpid/cpp/src/qpid/broker/Bridge.h4
-rw-r--r--qpid/cpp/src/qpid/broker/LinkRegistry.cpp6
-rw-r--r--qpid/cpp/src/qpid/broker/LinkRegistry.h4
4 files changed, 15 insertions, 8 deletions
diff --git a/qpid/cpp/src/qpid/broker/Bridge.cpp b/qpid/cpp/src/qpid/broker/Bridge.cpp
index 803f9e462e..60d8263a76 100644
--- a/qpid/cpp/src/qpid/broker/Bridge.cpp
+++ b/qpid/cpp/src/qpid/broker/Bridge.cpp
@@ -59,12 +59,13 @@ void Bridge::PushHandler::handle(framing::AMQFrame& frame)
Bridge::Bridge(const std::string& _name, Link* _link, framing::ChannelId _id,
CancellationListener l, const _qmf::ArgsLinkBridge& _args,
- InitializeCallback init) :
+ InitializeCallback init, const string& qn, const string& ae) :
link(_link), channel(_id), args(_args), mgmtObject(0),
- listener(l), name(_name), queueName("qpid.bridge_queue_"), persistenceId(0),
+ listener(l), name(_name), queueName(qn), altEx(ae), persistenceId(0),
connState(0), conn(0), initialize(init), detached(false)
{
- queueName += Uuid(true).str();
+ if (queueName.empty())
+ queueName = "qpid.bridge_queue_" + Uuid(true).str();
ManagementAgent* agent = link->getBroker()->getManagementAgent();
if (agent != 0) {
mgmtObject = new _qmf::Bridge
@@ -137,7 +138,7 @@ void Bridge::create(Connection& c)
bool durable = false;//should this be an arg, or would we use srcIsQueue for durable queues?
bool autoDelete = !durable;//auto delete transient queues?
- peer->getQueue().declare(queueName, "", false, durable, true, autoDelete, queueSettings);
+ peer->getQueue().declare(queueName, altEx, false, durable, true, autoDelete, queueSettings);
if (!args.i_dynamic)
peer->getExchange().bind(queueName, args.i_src, args.i_key, FieldTable());
peer->getMessage().subscribe(queueName, args.i_dest, 1, 0, false, "", 0, FieldTable());
diff --git a/qpid/cpp/src/qpid/broker/Bridge.h b/qpid/cpp/src/qpid/broker/Bridge.h
index b980abc900..8d6ed03faf 100644
--- a/qpid/cpp/src/qpid/broker/Bridge.h
+++ b/qpid/cpp/src/qpid/broker/Bridge.h
@@ -58,7 +58,8 @@ class Bridge : public PersistableConfig,
Bridge(const std::string& name, Link* link, framing::ChannelId id, CancellationListener l,
const qmf::org::apache::qpid::broker::ArgsLinkBridge& args,
- InitializeCallback init
+ InitializeCallback init, const std::string& queueName="",
+ const std::string& altExchange=""
);
~Bridge();
@@ -131,6 +132,7 @@ class Bridge : public PersistableConfig,
CancellationListener listener;
std::string name;
std::string queueName;
+ std::string altEx;
mutable uint64_t persistenceId;
ConnectionState* connState;
Connection* conn;
diff --git a/qpid/cpp/src/qpid/broker/LinkRegistry.cpp b/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
index 060eea412b..75c311c917 100644
--- a/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
+++ b/qpid/cpp/src/qpid/broker/LinkRegistry.cpp
@@ -164,7 +164,9 @@ pair<Bridge::shared_ptr, bool> LinkRegistry::declare(const std::string& name,
const std::string& excludes,
bool dynamic,
uint16_t sync,
- Bridge::InitializeCallback init
+ Bridge::InitializeCallback init,
+ const std::string& queueName,
+ const std::string& altExchange
)
{
Mutex::ScopedLock locker(lock);
@@ -207,7 +209,7 @@ pair<Bridge::shared_ptr, bool> LinkRegistry::declare(const std::string& name,
bridge = Bridge::shared_ptr
(new Bridge (name, &link, link.nextChannel(),
boost::bind(&LinkRegistry::destroyBridge, this, _1),
- args, init));
+ args, init, queueName, altExchange));
bridges[name] = bridge;
link.add(bridge);
if (durable && store)
diff --git a/qpid/cpp/src/qpid/broker/LinkRegistry.h b/qpid/cpp/src/qpid/broker/LinkRegistry.h
index c81ee751c8..5a39b62bd1 100644
--- a/qpid/cpp/src/qpid/broker/LinkRegistry.h
+++ b/qpid/cpp/src/qpid/broker/LinkRegistry.h
@@ -108,7 +108,9 @@ namespace broker {
const std::string& excludes,
bool dynamic,
uint16_t sync,
- Bridge::InitializeCallback=0
+ Bridge::InitializeCallback=0,
+ const std::string& queueName="",
+ const std::string& altExchange=""
);
/** determine if Bridge exists */
QPID_BROKER_EXTERN Bridge::shared_ptr