summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/broker/Exchange.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qpid/broker/Exchange.cpp')
-rw-r--r--qpid/cpp/src/qpid/broker/Exchange.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/Exchange.cpp b/qpid/cpp/src/qpid/broker/Exchange.cpp
index d143471559..2c7589e4b6 100644
--- a/qpid/cpp/src/qpid/broker/Exchange.cpp
+++ b/qpid/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;
+}