From 36af925c0645e87661df4ba8448244b69492a0c1 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 8 Nov 2007 15:55:41 +0000 Subject: Exception handling for dispatch functor Don't dequeue no-ack messages unless they have been acquired git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@593212 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/Queue.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'cpp/src/qpid/broker/Queue.cpp') diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp index a250009c77..1484fe464e 100644 --- a/cpp/src/qpid/broker/Queue.cpp +++ b/cpp/src/qpid/broker/Queue.cpp @@ -556,3 +556,18 @@ bool Queue::hasExclusiveConsumer() const { return exclusive; } + +void Queue::DispatchFunctor::operator()() +{ + try { + if (consumer && !consumer->preAcquires()) { + queue.serviceBrowser(consumer); + }else{ + queue.dispatch(); + } + } catch (const std::exception& e) { + QPID_LOG(error, "Exception on dispatch: " << e.what()); + } + + if (sync) sync->completed(); +} -- cgit v1.2.1