diff options
| author | Gordon Sim <gsim@apache.org> | 2006-12-07 12:44:08 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2006-12-07 12:44:08 +0000 |
| commit | dbf448f6beaf75d9026d3eefd018608189a05496 (patch) | |
| tree | e1792098af3163837c1a8cb0f74f298245c3d63e /qpid/cpp/lib/broker/QueuePolicy.cpp | |
| parent | 6959d7caa27f5da1e0488bbdd67ba3821ff30bfc (diff) | |
| download | qpid-python-dbf448f6beaf75d9026d3eefd018608189a05496.tar.gz | |
Added unit test and slightly refactored code.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@483437 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/lib/broker/QueuePolicy.cpp')
| -rw-r--r-- | qpid/cpp/lib/broker/QueuePolicy.cpp | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/qpid/cpp/lib/broker/QueuePolicy.cpp b/qpid/cpp/lib/broker/QueuePolicy.cpp index 055d415226..e13fd62fc6 100644 --- a/qpid/cpp/lib/broker/QueuePolicy.cpp +++ b/qpid/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) |
