summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Queue.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-11-08 15:55:41 +0000
committerGordon Sim <gsim@apache.org>2007-11-08 15:55:41 +0000
commit36af925c0645e87661df4ba8448244b69492a0c1 (patch)
treeeab5bf51dd1b68593583353be9374b02bd9277a3 /cpp/src/qpid/broker/Queue.cpp
parenta95e226914600dd00434addda8661c8286da3a0d (diff)
downloadqpid-python-36af925c0645e87661df4ba8448244b69492a0c1.tar.gz
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
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r--cpp/src/qpid/broker/Queue.cpp15
1 files changed, 15 insertions, 0 deletions
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();
+}