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);
         };
     }
 }