diff options
author | Gordon Sim <gsim@apache.org> | 2007-11-08 15:55:41 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2007-11-08 15:55:41 +0000 |
commit | 36af925c0645e87661df4ba8448244b69492a0c1 (patch) | |
tree | eab5bf51dd1b68593583353be9374b02bd9277a3 /cpp/src/qpid/broker/Queue.cpp | |
parent | a95e226914600dd00434addda8661c8286da3a0d (diff) | |
download | qpid-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.cpp | 15 |
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(); +} |