From 17716fee99670e49a1c3526a44c40d15757d94e3 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 6 Nov 2008 22:40:57 +0000 Subject: Add Message callbacks for async completion. Add unit test for async completion. Add sync parameter to generated session functions, defaults as before but allows greater control. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@711998 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/PersistableMessage.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'cpp/src/qpid/broker/PersistableMessage.cpp') diff --git a/cpp/src/qpid/broker/PersistableMessage.cpp b/cpp/src/qpid/broker/PersistableMessage.cpp index b67a669f1d..920dfd6386 100644 --- a/cpp/src/qpid/broker/PersistableMessage.cpp +++ b/cpp/src/qpid/broker/PersistableMessage.cpp @@ -87,6 +87,7 @@ void PersistableMessage::enqueueComplete() { } } if (notify) { + allEnqueuesComplete(); sys::ScopedLock l(storeLock); if (store) { for (syncList::iterator i = synclist.begin(); i != synclist.end(); ++i) { @@ -118,13 +119,17 @@ bool PersistableMessage::isDequeueComplete() { } void PersistableMessage::dequeueComplete() { - - sys::ScopedLock l(asyncDequeueLock); - if (asyncDequeueCounter > 0) { - if (--asyncDequeueCounter == 0) { - asyncDequeueLock.notify(); + bool notify = false; + { + sys::ScopedLock l(asyncDequeueLock); + if (asyncDequeueCounter > 0) { + if (--asyncDequeueCounter == 0) { + notify = true; + asyncDequeueLock.notify(); + } } } + if (notify) allDequeuesComplete(); } void PersistableMessage::waitForDequeueComplete() { -- cgit v1.2.1