From ade1ed0efba2a40d3b9598452950fb3eb91d4d2f Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Mon, 13 Jun 2011 19:05:23 +0000 Subject: QPID-3140: allow larger queue policy sizes git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1135227 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/QueuePolicy.cpp | 13 +++++++------ qpid/cpp/src/qpid/broker/QueuePolicy.h | 3 +-- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'qpid/cpp/src') diff --git a/qpid/cpp/src/qpid/broker/QueuePolicy.cpp b/qpid/cpp/src/qpid/broker/QueuePolicy.cpp index a93a6332fd..6ae0d53b1a 100644 --- a/qpid/cpp/src/qpid/broker/QueuePolicy.cpp +++ b/qpid/cpp/src/qpid/broker/QueuePolicy.cpp @@ -117,19 +117,20 @@ void QueuePolicy::update(FieldTable& settings) settings.setString(typeKey, type); } -uint32_t QueuePolicy::getCapacity(const FieldTable& settings, const std::string& key, uint32_t defaultValue) +template +T getCapacity(const FieldTable& settings, const std::string& key, T defaultValue) { FieldTable::ValuePtr v = settings.get(key); - int32_t result = 0; + T result = 0; if (!v) return defaultValue; if (v->getType() == 0x23) { QPID_LOG(debug, "Value for " << key << " specified as float: " << v->get()); } else if (v->getType() == 0x33) { QPID_LOG(debug, "Value for " << key << " specified as double: " << v->get()); - } else if (v->convertsTo()) { - result = v->get(); + } else if (v->convertsTo()) { + result = v->get(); QPID_LOG(debug, "Got integer value for " << key << ": " << result); if (result >= 0) return result; } else if (v->convertsTo()) { @@ -319,8 +320,8 @@ std::auto_ptr QueuePolicy::createQueuePolicy(const qpid::framing::F std::auto_ptr QueuePolicy::createQueuePolicy(const std::string& name, const qpid::framing::FieldTable& settings) { - uint32_t maxCount = getCapacity(settings, maxCountKey, 0); - uint32_t maxSize = getCapacity(settings, maxSizeKey, defaultMaxSize); + uint32_t maxCount = getCapacity(settings, maxCountKey, 0); + uint64_t maxSize = getCapacity(settings, maxSizeKey, defaultMaxSize); if (maxCount || maxSize) { return createQueuePolicy(name, maxCount, maxSize, getType(settings)); } else { diff --git a/qpid/cpp/src/qpid/broker/QueuePolicy.h b/qpid/cpp/src/qpid/broker/QueuePolicy.h index 3cdd63784d..ec7f846704 100644 --- a/qpid/cpp/src/qpid/broker/QueuePolicy.h +++ b/qpid/cpp/src/qpid/broker/QueuePolicy.h @@ -43,8 +43,7 @@ class QueuePolicy uint32_t count; uint64_t size; bool policyExceeded; - - static uint32_t getCapacity(const qpid::framing::FieldTable& settings, const std::string& key, uint32_t defaultValue); + protected: uint64_t getCurrentQueueSize() const { return size; } -- cgit v1.2.1