From a6303894d7f9a24df4a691af3ce94647c033ebff Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Tue, 24 Jul 2007 14:27:31 +0000 Subject: Initial support for latest approved 0-10 xml (with some transitional hacks included). git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@559059 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/BrokerQueue.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'cpp/src/qpid/broker/BrokerQueue.cpp') diff --git a/cpp/src/qpid/broker/BrokerQueue.cpp b/cpp/src/qpid/broker/BrokerQueue.cpp index cf6beff375..f8bffa01a3 100644 --- a/cpp/src/qpid/broker/BrokerQueue.cpp +++ b/cpp/src/qpid/broker/BrokerQueue.cpp @@ -56,8 +56,15 @@ Queue::Queue(const string& _name, bool _autodelete, Queue::~Queue(){} void Queue::deliver(Message::shared_ptr& msg){ - enqueue(0, msg); - process(msg); + if (msg->isImmediate() && getConsumerCount() == 0) { + if (alternateExchange) { + DeliverableMessage deliverable(msg); + alternateExchange->route(deliverable, msg->getRoutingKey(), &(msg->getApplicationHeaders())); + } + } else { + enqueue(0, msg); + process(msg); + } } void Queue::recover(Message::shared_ptr& msg){ @@ -255,6 +262,7 @@ void Queue::destroy() &(msg.getMessage().getApplicationHeaders())); pop(); } + alternateExchange->decAlternateUsers(); } if (store) { @@ -318,3 +326,8 @@ void Queue::setAlternateExchange(boost::shared_ptr exchange) { alternateExchange = exchange; } + +boost::shared_ptr Queue::getAlternateExchange() +{ + return alternateExchange; +} -- cgit v1.2.1