summaryrefslogtreecommitdiff
path: root/qpid/cpp/src
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-06-05 22:01:32 +0000
committerTed Ross <tross@apache.org>2008-06-05 22:01:32 +0000
commit0df14ea2ca5f9a3963578a0eb18f393199d04309 (patch)
treee1748691b9c244f12048cd4ce70e64fdd87ddc6f /qpid/cpp/src
parentc9dbee97e8a5f230fb952790335b8847892ed688 (diff)
downloadqpid-python-0df14ea2ca5f9a3963578a0eb18f393199d04309.tar.gz
Dequeue persistent messages from store in queue purge
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@663755 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/broker/Queue.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/broker/Queue.cpp b/qpid/cpp/src/qpid/broker/Queue.cpp
index 1eeb1fb7f8..08af97eb48 100644
--- a/qpid/cpp/src/qpid/broker/Queue.cpp
+++ b/qpid/cpp/src/qpid/broker/Queue.cpp
@@ -387,7 +387,15 @@ QueuedMessage Queue::dequeue(){
uint32_t Queue::purge(){
Mutex::ScopedLock locker(messageLock);
int count = messages.size();
- while(!messages.empty()) pop();
+ while(!messages.empty()) {
+ QueuedMessage& msg = messages.front();
+ if (store && msg.payload->isPersistent()) {
+ boost::intrusive_ptr<PersistableMessage> pmsg =
+ boost::static_pointer_cast<PersistableMessage>(msg.payload);
+ store->dequeue(0, pmsg, *this);
+ }
+ pop();
+ }
return count;
}