From bb788b76e509d9e0cf6f1d0b8becc4f8866d81c3 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 24 Jul 2008 17:31:43 +0000 Subject: 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 --- cpp/src/qpid/broker/QueuePolicy.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'cpp/src/qpid/broker/QueuePolicy.cpp') 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()) return v->get(); + 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); + -- cgit v1.2.1