Author: tross
Date: Thu Jun  5 15:01:32 2008
New Revision: 663755

URL: http://svn.apache.org/viewvc?rev=663755&view=rev
Log:
Dequeue persistent messages from store in queue purge

Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=663755&r1=663754&r2=663755&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Thu Jun  5 15:01:32 
2008
@@ -387,7 +387,15 @@
 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;
 }
 


Reply via email to