summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Queue.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-10-13 17:09:06 +0000
committerGordon Sim <gsim@apache.org>2008-10-13 17:09:06 +0000
commitd2030e43d1d2a68c37ed7c780f336f81a8b16064 (patch)
tree04f700ed0325eee6bfa5f750a3cc217c705f6c96 /cpp/src/qpid/broker/Queue.cpp
parent81e78eba4d75597a470356eebde654f14acdcc87 (diff)
downloadqpid-python-d2030e43d1d2a68c37ed7c780f336f81a8b16064.tar.gz
Periodically purge expired messages from queues
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@704166 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r--cpp/src/qpid/broker/Queue.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp
index 315da23965..ccd7c1fa3e 100644
--- a/cpp/src/qpid/broker/Queue.cpp
+++ b/cpp/src/qpid/broker/Queue.cpp
@@ -403,6 +403,19 @@ QueuedMessage Queue::get(){
return msg;
}
+void Queue::purgeExpired()
+{
+ Mutex::ScopedLock locker(messageLock);
+ for (Messages::iterator i = messages.begin(); i != messages.end(); ) {
+ if (i->payload->hasExpired()) {
+ dequeue(0, *i);
+ i = messages.erase(i);
+ } else {
+ ++i;
+ }
+ }
+}
+
/**
* purge - for purging all or some messages on a queue
* depending on the purge_request