summaryrefslogtreecommitdiff
path: root/cpp/lib/broker/QueuePolicy.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-12-07 12:44:08 +0000
committerGordon Sim <gsim@apache.org>2006-12-07 12:44:08 +0000
commitea25bbb6602aa35f7e862e810b99282580cd3684 (patch)
tree2625393031406ba8709bbfa515468b5f523e979e /cpp/lib/broker/QueuePolicy.cpp
parent6837709d617692649a22b689f7be6741dd569646 (diff)
downloadqpid-python-ea25bbb6602aa35f7e862e810b99282580cd3684.tar.gz
Added unit test and slightly refactored code.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@483437 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/lib/broker/QueuePolicy.cpp')
-rw-r--r--cpp/lib/broker/QueuePolicy.cpp24
1 files changed, 9 insertions, 15 deletions
diff --git a/cpp/lib/broker/QueuePolicy.cpp b/cpp/lib/broker/QueuePolicy.cpp
index 055d415226..e13fd62fc6 100644
--- a/cpp/lib/broker/QueuePolicy.cpp
+++ b/cpp/lib/broker/QueuePolicy.cpp
@@ -24,33 +24,27 @@ using namespace qpid::broker;
using namespace qpid::framing;
QueuePolicy::QueuePolicy(u_int32_t _maxCount, u_int64_t _maxSize) :
- maxCount(_maxCount), maxSize(_maxSize) {}
+ maxCount(_maxCount), maxSize(_maxSize), count(0), size(0) {}
QueuePolicy::QueuePolicy(const FieldTable& settings) :
maxCount(getInt(settings, maxCountKey, 0)),
- maxSize(getInt(settings, maxSizeKey, 0)) {}
+ maxSize(getInt(settings, maxSizeKey, 0)), count(0), size(0) {}
-void QueuePolicy::enqueued(Message::shared_ptr& msg, MessageStore* store)
+void QueuePolicy::enqueued(u_int64_t _size)
{
- if (checkCount(msg) || checkSize(msg)) {
- msg->releaseContent(store);
- }
+ if (maxCount) count++;
+ if (maxSize) size += _size;
}
-void QueuePolicy::dequeued(Message::shared_ptr& msg, MessageStore* /*store*/)
+void QueuePolicy::dequeued(u_int64_t _size)
{
if (maxCount) count--;
- if (maxSize) size -= msg->contentSize();
-}
-
-bool QueuePolicy::checkCount(Message::shared_ptr& /*msg*/)
-{
- return maxCount && ++count > maxCount;
+ if (maxSize) size -= _size;
}
-bool QueuePolicy::checkSize(Message::shared_ptr& msg)
+bool QueuePolicy::limitExceeded()
{
- return maxSize && (size += msg->contentSize()) > maxSize;
+ return (maxSize && size > maxSize) || (maxCount && count > maxCount);
}
void QueuePolicy::update(FieldTable& settings)