diff options
Diffstat (limited to 'cpp/src/qpid/broker/QueuePolicy.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/QueuePolicy.cpp | 19 |
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); + |
