summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/QueuePolicy.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-07-24 17:31:43 +0000
committerGordon Sim <gsim@apache.org>2008-07-24 17:31:43 +0000
commitbb788b76e509d9e0cf6f1d0b8becc4f8866d81c3 (patch)
treeb2e620efa1d97b801385a1f13b07a44a525c6d4e /cpp/src/qpid/broker/QueuePolicy.cpp
parentdfc598af62ccb812ebd53d5d8532f61b01b18245 (diff)
downloadqpid-python-bb788b76e509d9e0cf6f1d0b8becc4f8866d81c3.tar.gz
Allow configurable default size limit to be set for queues (merged from r679462).
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@679469 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/QueuePolicy.cpp')
-rw-r--r--cpp/src/qpid/broker/QueuePolicy.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/cpp/src/qpid/broker/QueuePolicy.cpp b/cpp/src/qpid/broker/QueuePolicy.cpp
index 9b9717def0..de84362f8f 100644
--- a/cpp/src/qpid/broker/QueuePolicy.cpp
+++ b/cpp/src/qpid/broker/QueuePolicy.cpp
@@ -29,7 +29,7 @@ QueuePolicy::QueuePolicy(uint32_t _maxCount, uint64_t _maxSize) :
QueuePolicy::QueuePolicy(const FieldTable& settings) :
maxCount(getInt(settings, maxCountKey, 0)),
- maxSize(getInt(settings, maxSizeKey, 0)), count(0), size(0) {}
+ maxSize(getInt(settings, maxSizeKey, defaultMaxSize)), count(0), size(0) {}
void QueuePolicy::enqueued(uint64_t _size)
{
@@ -57,14 +57,17 @@ void QueuePolicy::update(FieldTable& settings)
int QueuePolicy::getInt(const FieldTable& settings, const std::string& key, int defaultValue)
{
- //Note: currently field table only contain signed 32 bit ints, which
- // restricts the values that can be set on the queue policy.
- try {
- return settings.getInt(key);
- } catch (FieldValueException& ignore) {
- return defaultValue;
- }
+ FieldTable::ValuePtr v = settings.get(key);
+ if (v && v->convertsTo<int>()) return v->get<int>();
+ else return defaultValue;
+}
+
+void QueuePolicy::setDefaultMaxSize(uint64_t s)
+{
+ defaultMaxSize = s;
}
const std::string QueuePolicy::maxCountKey("qpid.max_count");
const std::string QueuePolicy::maxSizeKey("qpid.max_size");
+uint64_t QueuePolicy::defaultMaxSize(0);
+