diff options
| author | Gordon Sim <gsim@apache.org> | 2008-07-24 17:31:43 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2008-07-24 17:31:43 +0000 |
| commit | bb788b76e509d9e0cf6f1d0b8becc4f8866d81c3 (patch) | |
| tree | b2e620efa1d97b801385a1f13b07a44a525c6d4e /cpp/src/qpid/broker/QueuePolicy.cpp | |
| parent | dfc598af62ccb812ebd53d5d8532f61b01b18245 (diff) | |
| download | qpid-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.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); + |
