summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/BrokerQueue.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-06-27 12:39:49 +0000
committerGordon Sim <gsim@apache.org>2007-06-27 12:39:49 +0000
commit5a88e6f19bddc0b9f6da4712b616f5f08b4dec25 (patch)
tree6d32b3a3ef5416bb40027852b98eda9389cbbb6c /cpp/src/qpid/broker/BrokerQueue.cpp
parent4add83a2d2482a51f447ca71d2385ae19ea173fa (diff)
downloadqpid-python-5a88e6f19bddc0b9f6da4712b616f5f08b4dec25.tar.gz
Added preview of exchange- and binding- query methods that have been approved for 0-10.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@551144 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/BrokerQueue.cpp')
-rw-r--r--cpp/src/qpid/broker/BrokerQueue.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/BrokerQueue.cpp b/cpp/src/qpid/broker/BrokerQueue.cpp
index 58a8c85fcb..f11766e7ec 100644
--- a/cpp/src/qpid/broker/BrokerQueue.cpp
+++ b/cpp/src/qpid/broker/BrokerQueue.cpp
@@ -23,6 +23,8 @@
#include "qpid/log/Statement.h"
#include "BrokerQueue.h"
+#include "BrokerExchange.h"
+#include "DeliverableMessage.h"
#include "MessageStore.h"
#include "qpid/sys/Monitor.h"
#include "qpid/sys/Time.h"
@@ -233,6 +235,16 @@ void Queue::configure(const FieldTable& _settings)
void Queue::destroy()
{
+ if (alternateExchange.get()) {
+ Mutex::ScopedLock locker(lock);
+ while(!messages.empty()){
+ DeliverableMessage msg(messages.front());
+ alternateExchange->route(msg, msg.getMessage().getRoutingKey(),
+ &(msg.getMessage().getApplicationHeaders()));
+ pop();
+ }
+ }
+
if (store) {
store->destroy(*this);
}
@@ -289,3 +301,8 @@ Queue::shared_ptr Queue::decode(QueueRegistry& queues, framing::Buffer& buffer)
return result.first;
}
+
+void Queue::setAlternateExchange(boost::shared_ptr<Exchange> exchange)
+{
+ alternateExchange = exchange;
+}