summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Exchange.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2011-03-03 12:45:25 +0000
committerGordon Sim <gsim@apache.org>2011-03-03 12:45:25 +0000
commitf59f54a3b6b58af62e5f81c06410aaba2f06ad47 (patch)
tree65d1d18a755edd5566a0c0232afe9ab294db5ac8 /cpp/src/qpid/broker/Exchange.cpp
parent9194c6e4e67a5559b4577c5b788aa0cbfcf9a3f4 (diff)
downloadqpid-python-f59f54a3b6b58af62e5f81c06410aaba2f06ad47.tar.gz
QPID-3107: If queue's alternate-exchange can't route message, try that exchange's alternate-exchange
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1076604 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Exchange.cpp')
-rw-r--r--cpp/src/qpid/broker/Exchange.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Exchange.cpp b/cpp/src/qpid/broker/Exchange.cpp
index d143471559..2c7589e4b6 100644
--- a/cpp/src/qpid/broker/Exchange.cpp
+++ b/cpp/src/qpid/broker/Exchange.cpp
@@ -342,3 +342,12 @@ bool Exchange::MatchQueue::operator()(Exchange::Binding::shared_ptr b)
void Exchange::setProperties(const boost::intrusive_ptr<Message>& msg) {
msg->getProperties<DeliveryProperties>()->setExchange(getName());
}
+
+bool Exchange::routeWithAlternate(Deliverable& msg)
+{
+ route(msg, msg.getMessage().getRoutingKey(), msg.getMessage().getApplicationHeaders());
+ if (!msg.delivered && alternate) {
+ alternate->route(msg, msg.getMessage().getRoutingKey(), msg.getMessage().getApplicationHeaders());
+ }
+ return msg.delivered;
+}