You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2008/07/24 18:56:51 UTC
svn commit: r679462 - in
/incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker: Broker.cpp Broker.h
QueuePolicy.cpp QueuePolicy.h
Author: gsim
Date: Thu Jul 24 09:56:51 2008
New Revision: 679462
URL: http://svn.apache.org/viewvc?rev=679462&view=rev
Log:
Set a configurable default size limit on queues
Modified:
incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.cpp
incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.h
incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.cpp
incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.h
Modified: incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.cpp?rev=679462&r1=679461&r2=679462&view=diff
==============================================================================
--- incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.cpp (original)
+++ incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.cpp Thu Jul 24 09:56:51 2008
@@ -40,6 +40,7 @@
#include "qpid/sys/Poller.h"
#include "qpid/sys/Dispatcher.h"
#include "qpid/sys/Thread.h"
+#include "qpid/sys/Time.h"
#include "qpid/sys/ConnectionInputHandler.h"
#include "qpid/sys/ConnectionInputHandlerFactory.h"
#include "qpid/sys/TimeoutHandler.h"
@@ -86,7 +87,8 @@
auth(AUTH_DEFAULT),
realm("QPID"),
replayFlushLimit(0),
- replayHardLimit(0)
+ replayHardLimit(0),
+ queueLimit(100*1048576/*100M default limit*/)
{
int c = sys::SystemInfo::concurrency();
workerThreads=c+1;
@@ -109,7 +111,8 @@
("mgmt-enable,m", optValue(enableMgmt,"yes|no"), "Enable Management")
("mgmt-pub-interval", optValue(mgmtPubInterval, "SECONDS"), "Management Publish Interval")
("auth", optValue(auth, "yes|no"), "Enable authentication, if disabled all incoming connections will be trusted")
- ("realm", optValue(realm, "REALM"), "Use the given realm when performing authentication");
+ ("realm", optValue(realm, "REALM"), "Use the given realm when performing authentication")
+ ("default-queue-limit", optValue(queueLimit, "BYTES"), "Default maximum size for queues (in bytes)");
}
const std::string empty;
@@ -166,6 +169,8 @@
links.setParent (vhost);
}
+ QueuePolicy::setDefaultMaxSize(conf.queueLimit);
+
// Early-Initialize plugins
const Plugin::Plugins& plugins=Plugin::getPlugins();
for (Plugin::Plugins::const_iterator i = plugins.begin();
Modified: incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.h?rev=679462&r1=679461&r2=679462&view=diff
==============================================================================
--- incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.h (original)
+++ incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/Broker.h Thu Jul 24 09:56:51 2008
@@ -84,6 +84,7 @@
std::string realm;
size_t replayFlushLimit;
size_t replayHardLimit;
+ uint queueLimit;
};
virtual ~Broker();
Modified: incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.cpp?rev=679462&r1=679461&r2=679462&view=diff
==============================================================================
--- incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.cpp (original)
+++ incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.cpp Thu Jul 24 09:56:51 2008
@@ -29,7 +29,7 @@
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 @@
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);
+
Modified: incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.h?rev=679462&r1=679461&r2=679462&view=diff
==============================================================================
--- incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.h (original)
+++ incubator/qpid/branches/qpid.0-10/cpp/src/qpid/broker/QueuePolicy.h Thu Jul 24 09:56:51 2008
@@ -29,6 +29,8 @@
{
static const std::string maxCountKey;
static const std::string maxSizeKey;
+
+ static uint64_t defaultMaxSize;
const uint32_t maxCount;
const uint64_t maxSize;
@@ -46,6 +48,8 @@
bool limitExceeded();
uint32_t getMaxCount() const { return maxCount; }
uint64_t getMaxSize() const { return maxSize; }
+
+ static void setDefaultMaxSize(uint64_t);
};
}
}