You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2009/05/11 16:16:53 UTC
svn commit: r773570 [1/2] - in /qpid/trunk/qpid/cpp: managementgen/
managementgen/qmfgen/ managementgen/qmfgen/templates/ src/ src/qpid/acl/
src/qpid/broker/ src/qpid/cluster/ src/qpid/management/
Author: tross
Date: Mon May 11 14:16:52 2009
New Revision: 773570
URL: http://svn.apache.org/viewvc?rev=773570&view=rev
Log:
QPID-1843 - Cleaned up the interface to the broker's internal management agent.
Added:
qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp (contents, props changed)
- copied, changed from r772766, qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp
qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h (contents, props changed)
- copied, changed from r772766, qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h
Removed:
qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp
qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h
Modified:
qpid/trunk/qpid/cpp/managementgen/qmf-gen
qpid/trunk/qpid/cpp/managementgen/qmfgen/generate.py
qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py
qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.cpp
qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.cpp
qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h
qpid/trunk/qpid/cpp/src/Makefile.am
qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp
qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h
qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h
qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.h
qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h
qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h
qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h
qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h
qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/System.h
qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.h
qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h
qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp
qpid/trunk/qpid/cpp/src/qpid/management/ManagementExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/management/ManagementExchange.h
qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.cpp
qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.h
Modified: qpid/trunk/qpid/cpp/managementgen/qmf-gen
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmf-gen?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmf-gen (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmf-gen Mon May 11 14:16:52 2009
@@ -45,6 +45,8 @@
help="Prefix for generated files in make dependencies")
parser.add_option("-q", "--qpid-broker", dest="qpidbroker", default=False, action="store_true",
help="Generate makefile for Qpid broker")
+parser.add_option("-b", "--broker-plugin", dest="brokerplugin", default=False, action="store_true",
+ help="Generate code for use in a qpid broker plugin")
(opts, args) = parser.parse_args()
@@ -57,17 +59,23 @@
print "no input files"
parser.exit()
+vargs = {}
+if opts.brokerplugin:
+ vargs["agentHeaderDir"] = "management"
+else:
+ vargs["agentHeaderDir"] = "agent"
+
for schemafile in args:
package = SchemaPackage(typefile, schemafile, opts)
gen.setPackage (package.packageName)
- gen.makeClassFiles ("Class.h", package)
- gen.makeClassFiles ("Class.cpp", package)
- gen.makeMethodFiles ("Args.h", package)
- gen.makeEventFiles ("Event.h", package)
- gen.makeEventFiles ("Event.cpp", package)
- gen.makePackageFile ("Package.h", package)
- gen.makePackageFile ("Package.cpp", package)
+ gen.makeClassFiles ("Class.h", package, vars=vargs)
+ gen.makeClassFiles ("Class.cpp", package, vars=vargs)
+ gen.makeMethodFiles ("Args.h", package, vars=vargs)
+ gen.makeEventFiles ("Event.h", package, vars=vargs)
+ gen.makeEventFiles ("Event.cpp", package, vars=vargs)
+ gen.makePackageFile ("Package.h", package, vars=vargs)
+ gen.makePackageFile ("Package.cpp", package, vars=vargs)
if opts.makefile != None:
args = {}
Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/generate.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/generate.py?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/generate.py (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/generate.py Mon May 11 14:16:52 2009
@@ -388,30 +388,39 @@
def setVariable (self, key, value):
self.variables[key] = value
- def makeClassFiles (self, templateFile, schema, force=False):
+ def makeClassFiles (self, templateFile, schema, force=False, vars=None):
""" Generate an expanded template per schema class """
classes = schema.getClasses ()
template = Template (self.input + templateFile, self)
+ if vars:
+ for arg in vars:
+ self.setVariable(arg, vars[arg])
self.templateFiles.append (templateFile)
for _class in classes:
target = self.targetClassFile (_class, templateFile)
stream = template.expand (_class)
self.writeIfChanged (stream, target, force)
- def makeEventFiles (self, templateFile, schema, force=False):
+ def makeEventFiles (self, templateFile, schema, force=False, vars=None):
""" Generate an expanded template per schema event """
events = schema.getEvents()
template = Template (self.input + templateFile, self)
+ if vars:
+ for arg in vars:
+ self.setVariable(arg, vars[arg])
self.templateFiles.append (templateFile)
for event in events:
target = self.targetEventFile(event, templateFile)
stream = template.expand(event)
self.writeIfChanged(stream, target, force)
- def makeMethodFiles (self, templateFile, schema, force=False):
+ def makeMethodFiles (self, templateFile, schema, force=False, vars=None):
""" Generate an expanded template per method-with-arguments """
classes = schema.getClasses ()
template = Template (self.input + templateFile, self)
+ if vars:
+ for arg in vars:
+ self.setVariable(arg, vars[arg])
self.templateFiles.append (templateFile)
for _class in classes:
methods = _class.getMethods ()
@@ -421,9 +430,12 @@
stream = template.expand (method)
self.writeIfChanged (stream, target, force)
- def makePackageFile (self, templateFile, schema, force=False):
+ def makePackageFile (self, templateFile, schema, force=False, vars=None):
""" Generate a package-specific file """
template = Template (self.input + templateFile, self)
+ if vars:
+ for arg in vars:
+ self.setVariable(arg, vars[arg])
self.templateFiles.append (templateFile)
target = self.targetPackageFile (schema, templateFile)
stream = template.expand (schema)
Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/schema.py Mon May 11 14:16:52 2009
@@ -754,6 +754,9 @@
def getFullName (self):
return capitalize(self.package + capitalize(self.name))
+ def genAgentHeaderLocation (self, stream, variables):
+ stream.write(variables["agentHeaderDir"])
+
def getArgCount (self):
return len (self.args)
@@ -954,6 +957,9 @@
if inst.assign == None:
inst.genAccessor (stream)
+ def genAgentHeaderLocation (self, stream, variables):
+ stream.write(variables["agentHeaderDir"])
+
def genCloseNamespaces (self, stream, variables):
for item in self.packageName.split("."):
stream.write ("}")
@@ -1258,6 +1264,9 @@
def getEvents(self):
return self.events
+ def genAgentHeaderLocation (self, stream, variables):
+ stream.write(variables["agentHeaderDir"])
+
def genCloseNamespaces (self, stream, variables):
for item in self.packageName.split("."):
stream.write ("}")
Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.cpp (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.cpp Mon May 11 14:16:52 2009
@@ -23,7 +23,7 @@
#include "qpid/log/Statement.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/management/Manageable.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid//*MGEN:Class.AgentHeaderLocation*//ManagementAgent.h"
#include "/*MGEN:Class.NameCap*/.h"
/*MGEN:Class.MethodArgIncludes*/
@@ -40,8 +40,8 @@
uint8_t /*MGEN:Class.NameCap*/::md5Sum[16] =
{/*MGEN:Class.SchemaMD5*/};
-/*MGEN:Class.NameCap*/::/*MGEN:Class.NameCap*/ (ManagementAgent* _agent, Manageable* _core/*MGEN:Class.ParentArg*//*MGEN:Class.ConstructorArgs*/) :
- ManagementObject(_agent, _core)/*MGEN:Class.ConstructorInits*/
+/*MGEN:Class.NameCap*/::/*MGEN:Class.NameCap*/ (ManagementAgent*, Manageable* _core/*MGEN:Class.ParentArg*//*MGEN:Class.ConstructorArgs*/) :
+ ManagementObject(_core)/*MGEN:Class.ConstructorInits*/
{
/*MGEN:Class.ParentRefAssignment*/
/*MGEN:Class.InitializeElements*/
@@ -51,7 +51,6 @@
presenceMask[idx] = 0;
/*MGEN:ENDIF*/
/*MGEN:IF(Class.ExistPerThreadStats)*/
- maxThreads = agent->getMaxThreads();
perThreadStatsArray = new struct PerThreadStats*[maxThreads];
for (int idx = 0; idx < maxThreads; idx++)
perThreadStatsArray[idx] = 0;
Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h Mon May 11 14:16:52 2009
@@ -27,6 +27,12 @@
#include "qpid/framing/FieldTable.h"
#include "qpid/framing/Uuid.h"
+namespace qpid {
+ namespace management {
+ class ManagementAgent;
+ }
+}
+
namespace qmf {
/*MGEN:Class.OpenNamespaces*/
Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.cpp (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Event.cpp Mon May 11 14:16:52 2009
@@ -23,7 +23,7 @@
#include "qpid/log/Statement.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/management/Manageable.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid//*MGEN:Event.AgentHeaderLocation*//ManagementAgent.h"
#include "Event/*MGEN:Event.NameCap*/.h"
using namespace qmf::/*MGEN:Event.Namespace*/;
Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Package.h Mon May 11 14:16:52 2009
@@ -23,7 +23,7 @@
/*MGEN:Root.Disclaimer*/
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid//*MGEN:Class.AgentHeaderLocation*//ManagementAgent.h"
namespace qmf {
/*MGEN:Class.OpenNamespaces*/
Modified: qpid/trunk/qpid/cpp/src/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/Makefile.am?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/Makefile.am (original)
+++ qpid/trunk/qpid/cpp/src/Makefile.am Mon May 11 14:16:52 2009
@@ -87,7 +87,7 @@
# Management generator.
mgen_dir=$(top_srcdir)/managementgen
-mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk -q -o gen/qmf \
+mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk -q -b -o gen/qmf \
$(top_srcdir)/../specs/management-schema.xml \
$(srcdir)/qpid/acl/management-schema.xml \
$(srcdir)/qpid/cluster/management-schema.xml
@@ -427,7 +427,7 @@
qpid/broker/TxBuffer.cpp \
qpid/broker/TxPublish.cpp \
qpid/broker/Vhost.cpp \
- qpid/management/ManagementBroker.cpp \
+ qpid/management/ManagementAgent.cpp \
qpid/management/ManagementExchange.cpp \
qpid/sys/TCPIOPlugin.cpp
@@ -679,7 +679,7 @@
qpid/management/Args.h \
qpid/management/IdAllocator.h \
qpid/management/Manageable.h \
- qpid/management/ManagementBroker.h \
+ qpid/management/ManagementAgent.h \
qpid/management/ManagementEvent.h \
qpid/management/ManagementExchange.h \
qpid/management/ManagementObject.h \
Modified: qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp Mon May 11 14:16:52 2009
@@ -46,7 +46,7 @@
Acl::Acl (AclValues& av, Broker& b): aclValues(av), broker(&b), transferAcl(false)
{
- agent = ManagementAgent::Singleton::getInstance();
+ agent = broker->getManagementAgent();
if (agent != 0){
_qmf::Package packageInit(agent);
Modified: qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h Mon May 11 14:16:52 2009
@@ -26,7 +26,7 @@
#include "qpid/RefCounted.h"
#include "qpid/broker/AclModule.h"
#include "qpid/management/Manageable.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid/management/ManagementAgent.h"
#include "qmf/org/apache/qpid/acl/Acl.h"
#include <map>
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp Mon May 11 14:16:52 2009
@@ -24,7 +24,7 @@
#include "LinkRegistry.h"
#include "SessionState.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/framing/Uuid.h"
#include "qpid/log/Statement.h"
@@ -64,7 +64,7 @@
std::stringstream title;
title << id << "_" << link->getBroker()->getFederationTag();
queueName += title.str();
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = link->getBroker()->getManagementAgent();
if (agent != 0) {
mgmtObject = new _qmf::Bridge
(agent, this, link, id, args.i_durable, args.i_src, args.i_dest,
@@ -181,7 +181,7 @@
void Bridge::setPersistenceId(uint64_t pId) const
{
if (mgmtObject != 0 && persistenceId == 0) {
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = link->getBroker()->getManagementAgent();
agent->addObject (mgmtObject, pId);
}
persistenceId = pId;
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp Mon May 11 14:16:52 2009
@@ -65,7 +65,7 @@
using qpid::sys::Thread;
using qpid::framing::FrameHandler;
using qpid::framing::ChannelId;
-using qpid::management::ManagementBroker;
+using qpid::management::ManagementAgent;
using qpid::management::ManagementObject;
using qpid::management::Manageable;
using qpid::management::Args;
@@ -136,10 +136,11 @@
Broker::Broker(const Broker::Options& conf) :
poller(new Poller),
config(conf),
- managementAgentSingleton(!config.enableMgmt),
store(0),
acl(0),
dataDir(conf.noDataDir ? std::string() : conf.dataDir),
+ queues(this),
+ exchanges(this),
links(this),
factory(new SecureConnectionFactory(*this)),
dtxManager(timer),
@@ -148,6 +149,7 @@
conf.replayFlushLimit*1024, // convert kb to bytes.
conf.replayHardLimit*1024),
*this),
+ managementAgent(conf.enableMgmt ? new ManagementAgent() : 0),
queueCleaner(queues, timer),
queueEvents(poller),
recovery(true),
@@ -156,13 +158,11 @@
{
if (conf.enableMgmt) {
QPID_LOG(info, "Management enabled");
- managementAgent = managementAgentSingleton.getInstance();
- ((ManagementBroker*) managementAgent)->configure
- (dataDir.isEnabled() ? dataDir.getPath() : string(),
- conf.mgmtPubInterval, this, conf.workerThreads + 3);
+ managementAgent->configure(dataDir.isEnabled() ? dataDir.getPath() : string(),
+ conf.mgmtPubInterval, this, conf.workerThreads + 3);
_qmf::Package packageInitializer(managementAgent);
- System* system = new System (dataDir.isEnabled() ? dataDir.getPath() : string());
+ System* system = new System (dataDir.isEnabled() ? dataDir.getPath() : string(), this);
systemObject = System::shared_ptr(system);
mgmtObject = new _qmf::Broker(managementAgent, this, system, conf.port);
@@ -182,9 +182,9 @@
// Since there is currently no support for virtual hosts, a placeholder object
// representing the implied single virtual host is added here to keep the
// management schema correct.
- Vhost* vhost = new Vhost(this);
+ Vhost* vhost = new Vhost(this, this);
vhostObject = Vhost::shared_ptr(vhost);
- framing::Uuid uuid(((ManagementBroker*) managementAgent)->getUuid());
+ framing::Uuid uuid(managementAgent->getUuid());
federationTag = uuid.str();
vhostObject->setFederationTag(federationTag);
@@ -238,9 +238,8 @@
exchanges.declare(qpid_management, ManagementExchange::typeName);
Exchange::shared_ptr mExchange = exchanges.get (qpid_management);
Exchange::shared_ptr dExchange = exchanges.get (amq_direct);
- ((ManagementBroker*) managementAgent)->setExchange (mExchange, dExchange);
- boost::dynamic_pointer_cast<ManagementExchange>(mExchange)->setManagmentAgent
- ((ManagementBroker*) managementAgent);
+ managementAgent->setExchange(mExchange, dExchange);
+ boost::dynamic_pointer_cast<ManagementExchange>(mExchange)->setManagmentAgent(managementAgent);
}
else
QPID_LOG(info, "Management not enabled");
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h Mon May 11 14:16:52 2009
@@ -39,7 +39,7 @@
#include "Timer.h"
#include "ExpiryPolicy.h"
#include "qpid/management/Manageable.h"
-#include "qpid/management/ManagementBroker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qmf/org/apache/qpid/broker/Broker.h"
#include "qmf/org/apache/qpid/broker/ArgsBrokerConnect.h"
#include "qpid/Options.h"
@@ -120,7 +120,6 @@
boost::shared_ptr<sys::Poller> poller;
Options config;
- management::ManagementAgent::Singleton managementAgentSingleton;
ProtocolFactoryMap protocolFactories;
std::auto_ptr<MessageStore> store;
AclModule* acl;
@@ -235,6 +234,8 @@
void setRecovery(bool set) { recovery = set; }
bool getRecovery() const { return recovery; }
+
+ management::ManagementAgent* getManagementAgent() { return managementAgent; }
};
}}
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp Mon May 11 14:16:52 2009
@@ -67,7 +67,7 @@
if (parent != 0)
{
- agent = ManagementAgent::Singleton::getInstance();
+ agent = broker_.getManagementAgent();
// TODO set last bool true if system connection
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h Mon May 11 14:16:52 2009
@@ -40,7 +40,7 @@
#include "qpid/framing/AMQP_ClientProxy.h"
#include "qpid/framing/AMQP_ServerOperations.h"
#include "qpid/framing/ProtocolVersion.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/management/Manageable.h"
#include "qpid/ptr_map.h"
#include "qpid/sys/AggregateOutput.h"
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp Mon May 11 14:16:52 2009
@@ -41,15 +41,15 @@
const std::string fedOpHello("H");
}
-DirectExchange::DirectExchange(const string& _name, Manageable* _parent) : Exchange(_name, _parent)
+DirectExchange::DirectExchange(const string& _name, Manageable* _parent, Broker* b) : Exchange(_name, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type(typeName);
}
DirectExchange::DirectExchange(const string& _name, bool _durable,
- const FieldTable& _args, Manageable* _parent) :
- Exchange(_name, _durable, _args, _parent)
+ const FieldTable& _args, Manageable* _parent, Broker* b) :
+ Exchange(_name, _durable, _args, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type(typeName);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.h Mon May 11 14:16:52 2009
@@ -46,11 +46,11 @@
static const std::string typeName;
QPID_BROKER_EXTERN DirectExchange(const std::string& name,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
QPID_BROKER_EXTERN DirectExchange(const string& _name,
bool _durable,
const qpid::framing::FieldTable& _args,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
virtual std::string getType() const { return typeName; }
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp Mon May 11 14:16:52 2009
@@ -21,8 +21,8 @@
#include "Exchange.h"
#include "ExchangeRegistry.h"
-#include "qpid/agent/ManagementAgent.h"
-#include "qpid/management/ManagementBroker.h"
+#include "Broker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/log/Statement.h"
#include "qpid/framing/MessageProperties.h"
#include "DeliverableMessage.h"
@@ -33,7 +33,6 @@
using qpid::framing::FieldTable;
using qpid::sys::Mutex;
using qpid::management::ManagementAgent;
-using qpid::management::ManagementBroker;
using qpid::management::ManagementObject;
using qpid::management::Manageable;
using qpid::management::Args;
@@ -83,13 +82,13 @@
}
-Exchange::Exchange (const string& _name, Manageable* parent) :
- name(_name), durable(false), persistenceId(0), sequence(false),
- sequenceNo(0), ive(false), mgmtExchange(0)
+Exchange::Exchange (const string& _name, Manageable* parent, Broker* b) :
+ name(_name), durable(false), persistenceId(0), sequence(false),
+ sequenceNo(0), ive(false), mgmtExchange(0), broker(b)
{
- if (parent != 0)
+ if (parent != 0 && broker != 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
if (agent != 0)
{
mgmtExchange = new _qmf::Exchange (agent, this, parent, _name, durable);
@@ -101,13 +100,13 @@
static const std::string QPID_MANAGEMENT("qpid.management");
Exchange::Exchange(const string& _name, bool _durable, const qpid::framing::FieldTable& _args,
- Manageable* parent)
+ Manageable* parent, Broker* b)
: name(_name), durable(_durable), alternateUsers(0), persistenceId(0),
- args(_args), sequence(false), sequenceNo(0), ive(false), mgmtExchange(0)
+ args(_args), sequence(false), sequenceNo(0), ive(false), mgmtExchange(0), broker(b)
{
- if (parent != 0)
+ if (parent != 0 && broker != 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
if (agent != 0)
{
mgmtExchange = new _qmf::Exchange (agent, this, parent, _name, durable);
@@ -118,8 +117,7 @@
} else if (name == QPID_MANAGEMENT) {
agent->addObject (mgmtExchange, 0x1000000000000005LL); // Special management exchange ID
} else {
- ManagementBroker* mb = dynamic_cast<ManagementBroker*>(agent);
- agent->addObject (mgmtExchange, mb ? mb->allocateId(this) : 0);
+ agent->addObject (mgmtExchange, agent->allocateId(this));
}
}
}
@@ -145,7 +143,7 @@
{
if (mgmtExchange != 0 && persistenceId == 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
agent->addObject (mgmtExchange, 0x2000000000000000LL + id);
}
persistenceId = id;
@@ -240,20 +238,22 @@
{
if (parent != 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
- if (agent != 0)
- {
- ManagementObject* mo = queue->GetManagementObject();
- if (mo != 0)
- {
- management::ObjectId queueId = mo->getObjectId();
- mgmtBinding = new _qmf::Binding
- (agent, this, (Manageable*) parent, queueId, key, args);
- if (!origin.empty())
- mgmtBinding->set_origin(origin);
- ManagementBroker* mb = dynamic_cast<ManagementBroker*>(agent);
- agent->addObject (mgmtBinding, mb ? mb->allocateId(this) : 0);
- }
+ Broker* broker = parent->getBroker();
+ if (broker != 0) {
+ ManagementAgent* agent = broker->getManagementAgent();
+ if (agent != 0)
+ {
+ ManagementObject* mo = queue->GetManagementObject();
+ if (mo != 0)
+ {
+ management::ObjectId queueId = mo->getObjectId();
+ mgmtBinding = new _qmf::Binding
+ (agent, this, (Manageable*) parent, queueId, key, args);
+ if (!origin.empty())
+ mgmtBinding->set_origin(origin);
+ agent->addObject (mgmtBinding, agent->allocateId(this));
+ }
+ }
}
}
}
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h Mon May 11 14:16:52 2009
@@ -121,9 +121,10 @@
public:
typedef boost::shared_ptr<Exchange> shared_ptr;
- QPID_BROKER_EXTERN explicit Exchange(const std::string& name, management::Manageable* parent = 0);
+ QPID_BROKER_EXTERN explicit Exchange(const std::string& name, management::Manageable* parent = 0,
+ Broker* broker = 0);
QPID_BROKER_EXTERN Exchange(const std::string& _name, bool _durable, const qpid::framing::FieldTable& _args,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
QPID_BROKER_EXTERN virtual ~Exchange();
const std::string& getName() const { return name; }
@@ -167,10 +168,12 @@
void registerDynamicBridge(DynamicBridge* db);
void removeDynamicBridge(DynamicBridge* db);
virtual bool supportsDynamicBinding() { return false; }
+ Broker* getBroker() const { return broker; }
protected:
qpid::sys::Mutex bridgeLock;
std::vector<DynamicBridge*> bridgeVector;
+ Broker* broker;
QPID_BROKER_EXTERN virtual void handleHelloRequest();
void propagateFedOp(const std::string& routingKey, const std::string& tags,
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp Mon May 11 14:16:52 2009
@@ -45,15 +45,15 @@
Exchange::shared_ptr exchange;
if(type == TopicExchange::typeName){
- exchange = Exchange::shared_ptr(new TopicExchange(name, durable, args, parent));
+ exchange = Exchange::shared_ptr(new TopicExchange(name, durable, args, parent, broker));
}else if(type == DirectExchange::typeName){
- exchange = Exchange::shared_ptr(new DirectExchange(name, durable, args, parent));
+ exchange = Exchange::shared_ptr(new DirectExchange(name, durable, args, parent, broker));
}else if(type == FanOutExchange::typeName){
- exchange = Exchange::shared_ptr(new FanOutExchange(name, durable, args, parent));
+ exchange = Exchange::shared_ptr(new FanOutExchange(name, durable, args, parent, broker));
}else if (type == HeadersExchange::typeName) {
- exchange = Exchange::shared_ptr(new HeadersExchange(name, durable, args, parent));
+ exchange = Exchange::shared_ptr(new HeadersExchange(name, durable, args, parent, broker));
}else if (type == ManagementExchange::typeName) {
- exchange = Exchange::shared_ptr(new ManagementExchange(name, durable, args, parent));
+ exchange = Exchange::shared_ptr(new ManagementExchange(name, durable, args, parent, broker));
}
else{
FunctionMap::iterator i = factory.find(type);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h Mon May 11 14:16:52 2009
@@ -45,7 +45,7 @@
typedef boost::function4<Exchange::shared_ptr, const std::string&,
bool, const qpid::framing::FieldTable&, qpid::management::Manageable*> FactoryFunction;
- ExchangeRegistry () : parent(0) {}
+ ExchangeRegistry (Broker* b = 0) : parent(0), broker(b) {}
QPID_BROKER_EXTERN std::pair<Exchange::shared_ptr, bool> declare
(const std::string& name, const std::string& type);
QPID_BROKER_EXTERN std::pair<Exchange::shared_ptr, bool> declare
@@ -84,7 +84,7 @@
FunctionMap factory;
mutable qpid::sys::RWlock lock;
management::Manageable* parent;
-
+ Broker* broker;
};
}} // namespace qpid::broker
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp Mon May 11 14:16:52 2009
@@ -38,16 +38,16 @@
const std::string fedOpHello("H");
}
-FanOutExchange::FanOutExchange(const std::string& _name, Manageable* _parent) :
- Exchange(_name, _parent)
+FanOutExchange::FanOutExchange(const std::string& _name, Manageable* _parent, Broker* b) :
+ Exchange(_name, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
}
FanOutExchange::FanOutExchange(const std::string& _name, bool _durable,
- const FieldTable& _args, Manageable* _parent) :
- Exchange(_name, _durable, _args, _parent)
+ const FieldTable& _args, Manageable* _parent, Broker* b) :
+ Exchange(_name, _durable, _args, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h Mon May 11 14:16:52 2009
@@ -40,11 +40,11 @@
static const std::string typeName;
QPID_BROKER_EXTERN FanOutExchange(const std::string& name,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
QPID_BROKER_EXTERN FanOutExchange(const string& _name,
bool _durable,
const qpid::framing::FieldTable& _args,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
virtual std::string getType() const { return typeName; }
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp Mon May 11 14:16:52 2009
@@ -43,16 +43,16 @@
const std::string empty;
}
-HeadersExchange::HeadersExchange(const string& _name, Manageable* _parent) :
- Exchange(_name, _parent)
+HeadersExchange::HeadersExchange(const string& _name, Manageable* _parent, Broker* b) :
+ Exchange(_name, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
}
HeadersExchange::HeadersExchange(const std::string& _name, bool _durable,
- const FieldTable& _args, Manageable* _parent) :
- Exchange(_name, _durable, _args, _parent)
+ const FieldTable& _args, Manageable* _parent, Broker* b) :
+ Exchange(_name, _durable, _args, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h Mon May 11 14:16:52 2009
@@ -61,11 +61,11 @@
static const std::string typeName;
QPID_BROKER_EXTERN HeadersExchange(const string& name,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
QPID_BROKER_EXTERN HeadersExchange(const string& _name,
bool _durable,
const qpid::framing::FieldTable& _args,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
virtual std::string getType() const { return typeName; }
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp Mon May 11 14:16:52 2009
@@ -68,9 +68,9 @@
connection(0),
agent(0)
{
- if (parent != 0)
+ if (parent != 0 && broker != 0)
{
- agent = ManagementAgent::Singleton::getInstance();
+ agent = broker->getManagementAgent();
if (agent != 0)
{
mgmtObject = new _qmf::Link(agent, this, parent, _host, _port, _transport, _durable);
@@ -347,7 +347,7 @@
void Link::setPersistenceId(uint64_t id) const
{
if (mgmtObject != 0 && persistenceId == 0) {
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
agent->addObject(mgmtObject, id);
}
persistenceId = id;
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Link.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Link.h Mon May 11 14:16:52 2009
@@ -30,7 +30,7 @@
#include "qpid/sys/Mutex.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/management/Manageable.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid/management/ManagementAgent.h"
#include "qmf/org/apache/qpid/broker/Link.h"
#include <boost/ptr_container/ptr_vector.hpp>
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Mon May 11 14:16:52 2009
@@ -30,7 +30,7 @@
#include "qpid/StringUtils.h"
#include "qpid/log/Statement.h"
-#include "qpid/management/ManagementBroker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/framing/reply_exceptions.h"
#include "qpid/framing/FieldTable.h"
#include "qpid/sys/Monitor.h"
@@ -48,7 +48,6 @@
using namespace qpid::sys;
using namespace qpid::framing;
using qpid::management::ManagementAgent;
-using qpid::management::ManagementBroker;
using qpid::management::ManagementObject;
using qpid::management::Manageable;
using qpid::management::Args;
@@ -80,7 +79,8 @@
Queue::Queue(const string& _name, bool _autodelete,
MessageStore* const _store,
const OwnershipToken* const _owner,
- Manageable* parent) :
+ Manageable* parent,
+ Broker* b) :
name(_name),
autodelete(_autodelete),
@@ -98,11 +98,12 @@
mgmtObject(0),
eventMode(0),
eventMgr(0),
- insertSeqNo(0)
+ insertSeqNo(0),
+ broker(b)
{
- if (parent != 0)
+ if (parent != 0 && broker != 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
if (agent != 0)
{
@@ -111,8 +112,7 @@
// Add the object to the management agent only if this queue is not durable.
// If it's durable, we will add it later when the queue is assigned a persistenceId.
if (store == 0) {
- ManagementBroker* mb = dynamic_cast<ManagementBroker*>(agent);
- agent->addObject (mgmtObject, mb ? mb->allocateId(this) : 0);
+ agent->addObject (mgmtObject, agent->allocateId(this));
}
}
}
@@ -838,7 +838,7 @@
{
if (mgmtObject != 0 && persistenceId == 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
agent->addObject (mgmtObject, 0x3000000000000000LL + _persistenceId);
if (externalQueueStore) {
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h Mon May 11 14:16:52 2009
@@ -105,6 +105,7 @@
QueueEvents* eventMgr;
bool insertSeqNo;
std::string seqNoKey;
+ Broker* broker;
void push(boost::intrusive_ptr<Message>& msg, bool isRecovery=false);
void setPolicy(std::auto_ptr<QueuePolicy> policy);
@@ -158,7 +159,8 @@
bool autodelete = false,
MessageStore* const store = 0,
const OwnershipToken* const owner = 0,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0,
+ Broker* broker = 0);
QPID_BROKER_EXTERN ~Queue();
QPID_BROKER_EXTERN bool dispatch(Consumer::shared_ptr);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp Mon May 11 14:16:52 2009
@@ -27,8 +27,8 @@
using namespace qpid::broker;
using namespace qpid::sys;
-QueueRegistry::QueueRegistry() :
- counter(1), store(0), events(0), parent(0), lastNode(false) {}
+QueueRegistry::QueueRegistry(Broker* b) :
+ counter(1), store(0), events(0), parent(0), lastNode(false), broker(b) {}
QueueRegistry::~QueueRegistry(){}
@@ -42,7 +42,7 @@
QueueMap::iterator i = queues.find(name);
if (i == queues.end()) {
- Queue::shared_ptr queue(new Queue(name, autoDelete, durable ? store : 0, owner, parent));
+ Queue::shared_ptr queue(new Queue(name, autoDelete, durable ? store : 0, owner, parent, broker));
queues[name] = queue;
if (lastNode) queue->setLastNodeFailure();
if (events) queue->setQueueEventManager(*events);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h Mon May 11 14:16:52 2009
@@ -43,7 +43,7 @@
*/
class QueueRegistry {
public:
- QPID_BROKER_EXTERN QueueRegistry();
+ QPID_BROKER_EXTERN QueueRegistry(Broker* b = 0);
QPID_BROKER_EXTERN ~QueueRegistry();
/**
@@ -131,6 +131,7 @@
QueueEvents* events;
management::Manageable* parent;
bool lastNode; //used to set mode on queue declare
+ Broker* broker;
//destroy impl that assumes lock is already held:
void destroyLH (const string& name);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp Mon May 11 14:16:52 2009
@@ -23,7 +23,7 @@
#include "qpid/framing/enum.h"
#include "qpid/log/Statement.h"
#include "qpid/framing/SequenceSet.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid/management/ManagementAgent.h"
#include "qmf/org/apache/qpid/broker/EventExchangeDeclare.h"
#include "qmf/org/apache/qpid/broker/EventExchangeDelete.h"
#include "qmf/org/apache/qpid/broker/EventQueueDeclare.h"
@@ -98,7 +98,7 @@
checkAlternate(response.first, alternate);
}
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventExchangeDeclare(getConnection().getUrl(), getConnection().getUserId(), exchange, type,
alternateExchange, durable, false, args,
@@ -140,7 +140,7 @@
if (exchange->getAlternate()) exchange->getAlternate()->decAlternateUsers();
getBroker().getExchanges().destroy(name);
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventExchangeDelete(getConnection().getUrl(), getConnection().getUserId(), name));
}
@@ -181,7 +181,7 @@
getBroker().getStore().bind(*exchange, *queue, routingKey, arguments);
}
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventBind(getConnection().getUrl(), getConnection().getUserId(), exchangeName, queueName, exchangeRoutingKey, arguments));
}
@@ -214,7 +214,7 @@
if (exchange->isDurable() && queue->isDurable())
getBroker().getStore().unbind(*exchange, *queue, routingKey, FieldTable());
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventUnbind(getConnection().getUrl(), getConnection().getUserId(), exchangeName, queueName, routingKey));
}
@@ -372,7 +372,7 @@
}
}
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventQueueDeclare(getConnection().getUrl(), getConnection().getUserId(),
name, durable, exclusive, autoDelete, arguments,
@@ -422,7 +422,7 @@
getBroker().getQueues().destroy(queue);
q->unbind(getBroker().getExchanges(), q);
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventQueueDelete(getConnection().getUrl(), getConnection().getUserId(), queue));
}
@@ -484,7 +484,7 @@
acceptMode == 0, acquireMode == 0, exclusive,
resumeId, resumeTtl, arguments);
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventSubscribe(getConnection().getUrl(), getConnection().getUserId(),
queueName, destination, exclusive, arguments));
@@ -495,7 +495,7 @@
{
state.cancel(destination);
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent)
agent->raiseEvent(_qmf::EventUnsubscribe(getConnection().getUrl(), getConnection().getUserId(), destination));
}
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp Mon May 11 14:16:52 2009
@@ -32,7 +32,7 @@
#include "qpid/framing/reply_exceptions.h"
#include "qpid/framing/ServerInvoker.h"
#include "qpid/log/Statement.h"
-#include "qpid/management/ManagementBroker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/framing/AMQP_ClientProxy.h"
#include <boost/bind.hpp>
@@ -45,7 +45,6 @@
using sys::Mutex;
using boost::intrusive_ptr;
using qpid::management::ManagementAgent;
-using qpid::management::ManagementBroker;
using qpid::management::ManagementObject;
using qpid::management::Manageable;
using qpid::management::Args;
@@ -73,7 +72,7 @@
}
Manageable* parent = broker.GetVhostObject ();
if (parent != 0) {
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = getBroker().getManagementAgent();
if (agent != 0) {
mgmtObject = new _qmf::Session
(agent, this, parent, getId().getName());
@@ -81,8 +80,7 @@
mgmtObject->set_detachedLifespan (0);
mgmtObject->clr_expireTime();
if (rateFlowcontrol) mgmtObject->set_maxClientRate(maxRate);
- ManagementBroker* mb = dynamic_cast<ManagementBroker*>(agent);
- agent->addObject (mgmtObject, mb ? mb->allocateId(this) : 0);
+ agent->addObject (mgmtObject, agent->allocateId(this));
}
}
attach(h);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp Mon May 11 14:16:52 2009
@@ -18,7 +18,8 @@
//
#include "System.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "Broker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/framing/Uuid.h"
#include "qpid/sys/SystemInfo.h"
#include <iostream>
@@ -29,9 +30,9 @@
using namespace std;
namespace _qmf = qmf::org::apache::qpid::broker;
-System::System (string _dataDir) : mgmtObject(0)
+System::System (string _dataDir, Broker* broker) : mgmtObject(0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker ? broker->getManagementAgent() : 0;
if (agent != 0)
{
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/System.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/System.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/System.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/System.h Mon May 11 14:16:52 2009
@@ -28,6 +28,8 @@
namespace qpid {
namespace broker {
+class Broker;
+
class System : public management::Manageable
{
private:
@@ -38,7 +40,7 @@
typedef boost::shared_ptr<System> shared_ptr;
- System (std::string _dataDir);
+ System (std::string _dataDir, Broker* broker = 0);
management::ManagementObject* GetManagementObject (void) const
{ return mgmtObject; }
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp Mon May 11 14:16:52 2009
@@ -137,15 +137,15 @@
return do_match(begin(), end(), target.begin(), target.end());
}
-TopicExchange::TopicExchange(const string& _name, Manageable* _parent) : Exchange(_name, _parent)
+TopicExchange::TopicExchange(const string& _name, Manageable* _parent, Broker* b) : Exchange(_name, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
}
TopicExchange::TopicExchange(const std::string& _name, bool _durable,
- const FieldTable& _args, Manageable* _parent) :
- Exchange(_name, _durable, _args, _parent)
+ const FieldTable& _args, Manageable* _parent, Broker* b) :
+ Exchange(_name, _durable, _args, _parent, b)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.h Mon May 11 14:16:52 2009
@@ -86,11 +86,11 @@
static const std::string typeName;
QPID_BROKER_EXTERN TopicExchange(const string& name,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
QPID_BROKER_EXTERN TopicExchange(const string& _name,
bool _durable,
const qpid::framing::FieldTable& _args,
- management::Manageable* parent = 0);
+ management::Manageable* parent = 0, Broker* broker = 0);
virtual std::string getType() const { return typeName; }
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp Mon May 11 14:16:52 2009
@@ -18,7 +18,8 @@
//
#include "Vhost.h"
-#include "qpid/agent/ManagementAgent.h"
+#include "Broker.h"
+#include "qpid/management/ManagementAgent.h"
using namespace qpid::broker;
using qpid::management::ManagementAgent;
@@ -28,11 +29,11 @@
class Manageable;
}}
-Vhost::Vhost (qpid::management::Manageable* parentBroker) : mgmtObject(0)
+Vhost::Vhost (qpid::management::Manageable* parentBroker, Broker* broker) : mgmtObject(0)
{
- if (parentBroker != 0)
+ if (parentBroker != 0 && broker != 0)
{
- ManagementAgent* agent = ManagementAgent::Singleton::getInstance();
+ ManagementAgent* agent = broker->getManagementAgent();
if (agent != 0)
{
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h Mon May 11 14:16:52 2009
@@ -27,6 +27,7 @@
namespace qpid {
namespace broker {
+class Broker;
class Vhost : public management::Manageable
{
private:
@@ -37,7 +38,7 @@
typedef boost::shared_ptr<Vhost> shared_ptr;
- Vhost (management::Manageable* parentBroker);
+ Vhost (management::Manageable* parentBroker, Broker* broker = 0);
management::ManagementObject* GetManagementObject (void) const
{ return mgmtObject; }
Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp Mon May 11 14:16:52 2009
@@ -44,7 +44,7 @@
#include "qpid/log/Helpers.h"
#include "qpid/log/Statement.h"
#include "qpid/management/IdAllocator.h"
-#include "qpid/management/ManagementBroker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/memory.h"
#include "qpid/sys/Thread.h"
#include "qpid/sys/LatencyTracker.h"
@@ -116,7 +116,7 @@
lastBroker(false),
error(*this)
{
- mAgent = ManagementAgent::Singleton::getInstance();
+ mAgent = broker.getManagementAgent();
if (mAgent != 0){
_qmf::Package packageInit(mAgent);
mgmtObject = new _qmf::Cluster (mAgent, this, &broker,name,myUrl.str());
Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp Mon May 11 14:16:52 2009
@@ -31,7 +31,7 @@
#include "qpid/sys/AtomicValue.h"
#include "qpid/log/Statement.h"
-#include "qpid/management/ManagementBroker.h"
+#include "qpid/management/ManagementAgent.h"
#include "qpid/management/IdAllocator.h"
#include "qpid/broker/Exchange.h"
#include "qpid/broker/Queue.h"
@@ -49,7 +49,6 @@
using broker::Broker;
using management::IdAllocator;
using management::ManagementAgent;
-using management::ManagementBroker;
/** Note separating options from settings to work around boost version differences.
@@ -140,7 +139,7 @@
broker->setConnectionFactory(
boost::shared_ptr<sys::ConnectionCodec::Factory>(
new ConnectionCodec::Factory(broker->getConnectionFactory(), *cluster)));
- ManagementBroker* mgmt = dynamic_cast<ManagementBroker*>(ManagementAgent::Singleton::getInstance());
+ ManagementAgent* mgmt = broker->getManagementAgent();
if (mgmt) {
std::auto_ptr<IdAllocator> allocator(new UpdateClientIdAllocator());
mgmt->setAllocator(allocator);
Copied: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp (from r772766, qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp?p2=qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp&p1=qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp&r1=772766&r2=773570&rev=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp Mon May 11 14:16:52 2009
@@ -19,7 +19,8 @@
*
*/
-#include "ManagementBroker.h"
+#include "ManagementAgent.h"
+#include "ManagementObject.h"
#include "IdAllocator.h"
#include "qpid/broker/DeliverableMessage.h"
#include "qpid/log/Statement.h"
@@ -41,45 +42,13 @@
using namespace std;
namespace _qmf = qmf::org::apache::qpid::broker;
-Mutex ManagementAgent::Singleton::lock;
-bool ManagementAgent::Singleton::disabled = false;
-ManagementAgent* ManagementAgent::Singleton::agent = 0;
-int ManagementAgent::Singleton::refCount = 0;
-
-ManagementAgent::Singleton::Singleton(bool disableManagement)
-{
- Mutex::ScopedLock _lock(lock);
- if (disableManagement && !disabled) {
- disabled = true;
- assert(refCount == 0); // can't disable after agent has been allocated
- }
- if (refCount == 0 && !disabled)
- agent = new ManagementBroker();
- refCount++;
-}
-
-ManagementAgent::Singleton::~Singleton()
-{
- Mutex::ScopedLock _lock(lock);
- refCount--;
- if (refCount == 0 && !disabled) {
- delete agent;
- agent = 0;
- }
-}
-
-ManagementAgent* ManagementAgent::Singleton::getInstance()
-{
- return agent;
-}
-
-ManagementBroker::RemoteAgent::~RemoteAgent ()
+ManagementAgent::RemoteAgent::~RemoteAgent ()
{
if (mgmtObject != 0)
mgmtObject->resourceDestroy();
}
-ManagementBroker::ManagementBroker () :
+ManagementAgent::ManagementAgent () :
threadPoolSize(1), interval(10), broker(0), startTime(uint64_t(Duration(now())))
{
nextObjectId = 1;
@@ -90,7 +59,7 @@
clientWasAdded = false;
}
-ManagementBroker::~ManagementBroker ()
+ManagementAgent::~ManagementAgent ()
{
timer.stop();
{
@@ -114,20 +83,21 @@
}
}
-void ManagementBroker::configure(const string& _dataDir, uint16_t _interval,
+void ManagementAgent::configure(const string& _dataDir, uint16_t _interval,
qpid::broker::Broker* _broker, int _threads)
{
dataDir = _dataDir;
interval = _interval;
broker = _broker;
threadPoolSize = _threads;
+ ManagementObject::maxThreads = threadPoolSize;
timer.add (intrusive_ptr<TimerTask> (new Periodic(*this, interval)));
// Get from file or generate and save to file.
if (dataDir.empty())
{
uuid.generate();
- QPID_LOG (info, "ManagementBroker has no data directory, generated new broker ID: "
+ QPID_LOG (info, "ManagementAgent has no data directory, generated new broker ID: "
<< uuid);
}
else
@@ -141,7 +111,7 @@
inFile >> bootSequence;
inFile >> nextRemoteBank;
inFile.close();
- QPID_LOG (debug, "ManagementBroker restored broker ID: " << uuid);
+ QPID_LOG (debug, "ManagementAgent restored broker ID: " << uuid);
// if sequence goes beyond a 12-bit field, skip zero and wrap to 1.
bootSequence++;
@@ -152,15 +122,15 @@
else
{
uuid.generate();
- QPID_LOG (info, "ManagementBroker generated broker ID: " << uuid);
+ QPID_LOG (info, "ManagementAgent generated broker ID: " << uuid);
writeData();
}
- QPID_LOG (debug, "ManagementBroker boot sequence: " << bootSequence);
+ QPID_LOG (debug, "ManagementAgent boot sequence: " << bootSequence);
}
}
-void ManagementBroker::writeData ()
+void ManagementAgent::writeData ()
{
string filename (dataDir + "/.mbrokerdata");
ofstream outFile (filename.c_str ());
@@ -172,14 +142,14 @@
}
}
-void ManagementBroker::setExchange (qpid::broker::Exchange::shared_ptr _mexchange,
+void ManagementAgent::setExchange (qpid::broker::Exchange::shared_ptr _mexchange,
qpid::broker::Exchange::shared_ptr _dexchange)
{
mExchange = _mexchange;
dExchange = _dexchange;
}
-void ManagementBroker::registerClass (const string& packageName,
+void ManagementAgent::registerClass (const string& packageName,
const string& className,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
@@ -189,7 +159,7 @@
addClassLH(ManagementItem::CLASS_KIND_TABLE, pIter, className, md5Sum, schemaCall);
}
-void ManagementBroker::registerEvent (const string& packageName,
+void ManagementAgent::registerEvent (const string& packageName,
const string& eventName,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
@@ -199,7 +169,7 @@
addClassLH(ManagementItem::CLASS_KIND_EVENT, pIter, eventName, md5Sum, schemaCall);
}
-ObjectId ManagementBroker::addObject (ManagementObject* object,
+ObjectId ManagementAgent::addObject (ManagementObject* object,
uint64_t persistId)
{
Mutex::ScopedLock lock (addLock);
@@ -221,7 +191,7 @@
return objId;
}
-void ManagementBroker::raiseEvent(const ManagementEvent& event, severity_t severity)
+void ManagementAgent::raiseEvent(const ManagementEvent& event, severity_t severity)
{
Mutex::ScopedLock lock (userLock);
Buffer outBuffer(eventBuffer, MA_BUFFER_SIZE);
@@ -241,18 +211,18 @@
"console.event.1.0." + event.getPackageName() + "." + event.getEventName());
}
-ManagementBroker::Periodic::Periodic (ManagementBroker& _broker, uint32_t _seconds)
- : TimerTask (qpid::sys::Duration ((_seconds ? _seconds : 1) * qpid::sys::TIME_SEC)), broker(_broker) {}
+ManagementAgent::Periodic::Periodic (ManagementAgent& _agent, uint32_t _seconds)
+ : TimerTask (qpid::sys::Duration ((_seconds ? _seconds : 1) * qpid::sys::TIME_SEC)), agent(_agent) {}
-ManagementBroker::Periodic::~Periodic () {}
+ManagementAgent::Periodic::~Periodic () {}
-void ManagementBroker::Periodic::fire ()
+void ManagementAgent::Periodic::fire ()
{
- broker.timer.add (intrusive_ptr<TimerTask> (new Periodic (broker, broker.interval)));
- broker.periodicProcessing ();
+ agent.timer.add (intrusive_ptr<TimerTask> (new Periodic (agent, agent.interval)));
+ agent.periodicProcessing ();
}
-void ManagementBroker::clientAdded (const std::string& routingKey)
+void ManagementAgent::clientAdded (const std::string& routingKey)
{
if (routingKey.find("console") != 0)
return;
@@ -272,7 +242,7 @@
}
}
-void ManagementBroker::encodeHeader (Buffer& buf, uint8_t opcode, uint32_t seq)
+void ManagementAgent::encodeHeader (Buffer& buf, uint8_t opcode, uint32_t seq)
{
buf.putOctet ('A');
buf.putOctet ('M');
@@ -281,7 +251,7 @@
buf.putLong (seq);
}
-bool ManagementBroker::checkHeader (Buffer& buf, uint8_t *opcode, uint32_t *seq)
+bool ManagementAgent::checkHeader (Buffer& buf, uint8_t *opcode, uint32_t *seq)
{
uint8_t h1 = buf.getOctet();
uint8_t h2 = buf.getOctet();
@@ -293,7 +263,7 @@
return h1 == 'A' && h2 == 'M' && h3 == '2';
}
-void ManagementBroker::sendBuffer(Buffer& buf,
+void ManagementAgent::sendBuffer(Buffer& buf,
uint32_t length,
qpid::broker::Exchange::shared_ptr exchange,
string routingKey)
@@ -327,7 +297,7 @@
} catch(exception&) {}
}
-void ManagementBroker::moveNewObjectsLH()
+void ManagementAgent::moveNewObjectsLH()
{
Mutex::ScopedLock lock (addLock);
for (ManagementObjectMap::iterator iter = newManagementObjects.begin ();
@@ -337,7 +307,7 @@
newManagementObjects.clear();
}
-void ManagementBroker::periodicProcessing (void)
+void ManagementAgent::periodicProcessing (void)
{
#define BUFSIZE 65536
Mutex::ScopedLock lock (userLock);
@@ -421,7 +391,7 @@
}
}
-void ManagementBroker::sendCommandComplete (string replyToKey, uint32_t sequence,
+void ManagementAgent::sendCommandComplete (string replyToKey, uint32_t sequence,
uint32_t code, string text)
{
Buffer outBuffer (outputBuffer, MA_BUFFER_SIZE);
@@ -435,7 +405,7 @@
sendBuffer (outBuffer, outLen, dExchange, replyToKey);
}
-bool ManagementBroker::dispatchCommand (Deliverable& deliverable,
+bool ManagementAgent::dispatchCommand (Deliverable& deliverable,
const string& routingKey,
const FieldTable* /*args*/)
{
@@ -471,7 +441,7 @@
return true;
}
-void ManagementBroker::handleMethodRequestLH (Buffer& inBuffer, string replyToKey,
+void ManagementAgent::handleMethodRequestLH (Buffer& inBuffer, string replyToKey,
uint32_t sequence, const ConnectionToken* connToken)
{
string methodName;
@@ -532,7 +502,7 @@
sendBuffer(outBuffer, outLen, dExchange, replyToKey);
}
-void ManagementBroker::handleBrokerRequestLH (Buffer&, string replyToKey, uint32_t sequence)
+void ManagementAgent::handleBrokerRequestLH (Buffer&, string replyToKey, uint32_t sequence)
{
Buffer outBuffer (outputBuffer, MA_BUFFER_SIZE);
uint32_t outLen;
@@ -545,7 +515,7 @@
sendBuffer (outBuffer, outLen, dExchange, replyToKey);
}
-void ManagementBroker::handlePackageQueryLH (Buffer&, string replyToKey, uint32_t sequence)
+void ManagementAgent::handlePackageQueryLH (Buffer&, string replyToKey, uint32_t sequence)
{
for (PackageMap::iterator pIter = packages.begin ();
pIter != packages.end ();
@@ -564,7 +534,7 @@
sendCommandComplete (replyToKey, sequence);
}
-void ManagementBroker::handlePackageIndLH (Buffer& inBuffer, string /*replyToKey*/, uint32_t /*sequence*/)
+void ManagementAgent::handlePackageIndLH (Buffer& inBuffer, string /*replyToKey*/, uint32_t /*sequence*/)
{
string packageName;
@@ -572,7 +542,7 @@
findOrAddPackageLH(packageName);
}
-void ManagementBroker::handleClassQueryLH(Buffer& inBuffer, string replyToKey, uint32_t sequence)
+void ManagementAgent::handleClassQueryLH(Buffer& inBuffer, string replyToKey, uint32_t sequence)
{
string packageName;
@@ -601,7 +571,7 @@
sendCommandComplete(replyToKey, sequence);
}
-void ManagementBroker::handleClassIndLH (Buffer& inBuffer, string replyToKey, uint32_t)
+void ManagementAgent::handleClassIndLH (Buffer& inBuffer, string replyToKey, uint32_t)
{
string packageName;
SchemaClassKey key;
@@ -633,7 +603,7 @@
}
}
-void ManagementBroker::SchemaClass::appendSchema(Buffer& buf)
+void ManagementAgent::SchemaClass::appendSchema(Buffer& buf)
{
// If the management package is attached locally (embedded in the broker or
// linked in via plug-in), call the schema handler directly. If the package
@@ -645,7 +615,7 @@
buf.putRawData(buffer, bufferLen);
}
-void ManagementBroker::handleSchemaRequestLH(Buffer& inBuffer, string replyToKey, uint32_t sequence)
+void ManagementAgent::handleSchemaRequestLH(Buffer& inBuffer, string replyToKey, uint32_t sequence)
{
string packageName;
SchemaClassKey key;
@@ -680,7 +650,7 @@
sendCommandComplete(replyToKey, sequence, 1, "Package not found");
}
-void ManagementBroker::handleSchemaResponseLH(Buffer& inBuffer, string /*replyToKey*/, uint32_t sequence)
+void ManagementAgent::handleSchemaResponseLH(Buffer& inBuffer, string /*replyToKey*/, uint32_t sequence)
{
string packageName;
SchemaClassKey key;
@@ -699,7 +669,7 @@
if (cIter != cMap.end() && cIter->second.pendingSequence == sequence) {
size_t length = validateSchema(inBuffer, cIter->second.kind);
if (length == 0) {
- QPID_LOG(warning, "Management Broker received invalid schema response: " << packageName << "." << key.name);
+ QPID_LOG(warning, "Management Agent received invalid schema response: " << packageName << "." << key.name);
cMap.erase(key);
} else {
cIter->second.buffer = (uint8_t*) malloc(length);
@@ -720,7 +690,7 @@
}
}
-bool ManagementBroker::bankInUse (uint32_t bank)
+bool ManagementAgent::bankInUse (uint32_t bank)
{
for (RemoteAgentMap::iterator aIter = remoteAgents.begin();
aIter != remoteAgents.end();
@@ -730,7 +700,7 @@
return false;
}
-uint32_t ManagementBroker::allocateNewBank ()
+uint32_t ManagementAgent::allocateNewBank ()
{
while (bankInUse (nextRemoteBank))
nextRemoteBank++;
@@ -740,14 +710,14 @@
return allocated;
}
-uint32_t ManagementBroker::assignBankLH (uint32_t requestedBank)
+uint32_t ManagementAgent::assignBankLH (uint32_t requestedBank)
{
if (requestedBank == 0 || bankInUse (requestedBank))
return allocateNewBank ();
return requestedBank;
}
-void ManagementBroker::deleteOrphanedAgentsLH()
+void ManagementAgent::deleteOrphanedAgentsLH()
{
vector<ObjectId> deleteList;
@@ -776,7 +746,7 @@
deleteList.clear();
}
-void ManagementBroker::handleAttachRequestLH (Buffer& inBuffer, string replyToKey, uint32_t sequence, const ConnectionToken* connToken)
+void ManagementAgent::handleAttachRequestLH (Buffer& inBuffer, string replyToKey, uint32_t sequence, const ConnectionToken* connToken)
{
string label;
uint32_t requestedBrokerBank, requestedAgentBank;
@@ -827,7 +797,7 @@
sendBuffer (outBuffer, outLen, dExchange, replyToKey);
}
-void ManagementBroker::handleGetQueryLH (Buffer& inBuffer, string replyToKey, uint32_t sequence)
+void ManagementAgent::handleGetQueryLH (Buffer& inBuffer, string replyToKey, uint32_t sequence)
{
FieldTable ft;
FieldTable::ValuePtr value;
@@ -887,7 +857,7 @@
sendCommandComplete(replyToKey, sequence);
}
-bool ManagementBroker::authorizeAgentMessageLH(Message& msg)
+bool ManagementAgent::authorizeAgentMessageLH(Message& msg)
{
Buffer inBuffer (inputBuffer, MA_BUFFER_SIZE);
uint8_t opcode;
@@ -951,7 +921,7 @@
return true;
}
-void ManagementBroker::dispatchAgentCommandLH(Message& msg)
+void ManagementAgent::dispatchAgentCommandLH(Message& msg)
{
Buffer inBuffer(inputBuffer, MA_BUFFER_SIZE);
uint8_t opcode;
@@ -968,7 +938,7 @@
return;
if (msg.encodedSize() > MA_BUFFER_SIZE) {
- QPID_LOG(debug, "ManagementBroker::dispatchAgentCommandLH: Message too large: " <<
+ QPID_LOG(debug, "ManagementAgent::dispatchAgentCommandLH: Message too large: " <<
msg.encodedSize());
return;
}
@@ -994,7 +964,7 @@
}
}
-ManagementBroker::PackageMap::iterator ManagementBroker::findOrAddPackageLH(string name)
+ManagementAgent::PackageMap::iterator ManagementAgent::findOrAddPackageLH(string name)
{
PackageMap::iterator pIter = packages.find (name);
if (pIter != packages.end ())
@@ -1003,7 +973,7 @@
// No such package found, create a new map entry.
pair<PackageMap::iterator, bool> result =
packages.insert(pair<string, ClassMap>(name, ClassMap()));
- QPID_LOG (debug, "ManagementBroker added package " << name);
+ QPID_LOG (debug, "ManagementAgent added package " << name);
// Publish a package-indication message
Buffer outBuffer (outputBuffer, MA_BUFFER_SIZE);
@@ -1018,7 +988,7 @@
return result.first;
}
-void ManagementBroker::addClassLH(uint8_t kind,
+void ManagementAgent::addClassLH(uint8_t kind,
PackageMap::iterator pIter,
const string& className,
uint8_t* md5Sum,
@@ -1035,20 +1005,20 @@
return;
// No such class found, create a new class with local information.
- QPID_LOG (debug, "ManagementBroker added class " << pIter->first << ":" <<
+ QPID_LOG (debug, "ManagementAgent added class " << pIter->first << ":" <<
key.name);
cMap.insert(pair<SchemaClassKey, SchemaClass>(key, SchemaClass(kind, schemaCall)));
cIter = cMap.find(key);
}
-void ManagementBroker::encodePackageIndication(Buffer& buf,
+void ManagementAgent::encodePackageIndication(Buffer& buf,
PackageMap::iterator pIter)
{
buf.putShortString((*pIter).first);
}
-void ManagementBroker::encodeClassIndication(Buffer& buf,
+void ManagementAgent::encodeClassIndication(Buffer& buf,
PackageMap::iterator pIter,
ClassMap::iterator cIter)
{
@@ -1060,7 +1030,7 @@
buf.putBin128(key.hash);
}
-size_t ManagementBroker::validateSchema(Buffer& inBuffer, uint8_t kind)
+size_t ManagementAgent::validateSchema(Buffer& inBuffer, uint8_t kind)
{
if (kind == ManagementItem::CLASS_KIND_TABLE)
return validateTableSchema(inBuffer);
@@ -1069,7 +1039,7 @@
return 0;
}
-size_t ManagementBroker::validateTableSchema(Buffer& inBuffer)
+size_t ManagementAgent::validateTableSchema(Buffer& inBuffer)
{
uint32_t start = inBuffer.getPosition();
uint32_t end;
@@ -1115,7 +1085,7 @@
return end - start;
}
-size_t ManagementBroker::validateEventSchema(Buffer& inBuffer)
+size_t ManagementAgent::validateEventSchema(Buffer& inBuffer)
{
uint32_t start = inBuffer.getPosition();
uint32_t end;
@@ -1147,13 +1117,13 @@
return end - start;
}
-void ManagementBroker::setAllocator(std::auto_ptr<IdAllocator> a)
+void ManagementAgent::setAllocator(std::auto_ptr<IdAllocator> a)
{
Mutex::ScopedLock lock (addLock);
allocator = a;
}
-uint64_t ManagementBroker::allocateId(Manageable* object)
+uint64_t ManagementAgent::allocateId(Manageable* object)
{
Mutex::ScopedLock lock (addLock);
if (allocator.get()) return allocator->getIdFor(object);
Propchange: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
------------------------------------------------------------------------------
svn:mergeinfo =
Copied: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h (from r772766, qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h?p2=qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h&p1=qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h&r1=772766&r2=773570&rev=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/management/ManagementBroker.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h Mon May 11 14:16:52 2009
@@ -1,5 +1,5 @@
-#ifndef _ManagementBroker_
-#define _ManagementBroker_
+#ifndef _ManagementAgent_
+#define _ManagementAgent_
/*
*
@@ -21,14 +21,15 @@
* under the License.
*
*/
+#include "qpid/broker/BrokerImportExport.h"
#include "qpid/Options.h"
#include "qpid/broker/Exchange.h"
#include "qpid/broker/Timer.h"
#include "qpid/framing/Uuid.h"
#include "qpid/sys/Mutex.h"
#include "qpid/broker/ConnectionToken.h"
-#include "qpid/agent/ManagementAgent.h"
#include "ManagementObject.h"
+#include "ManagementEvent.h"
#include "Manageable.h"
#include "qmf/org/apache/qpid/broker/Agent.h"
#include <qpid/framing/AMQFrame.h>
@@ -39,15 +40,27 @@
struct IdAllocator;
-class ManagementBroker : public ManagementAgent
+class ManagementAgent
{
private:
int threadPoolSize;
public:
- ManagementBroker ();
- virtual ~ManagementBroker ();
+ typedef enum {
+ SEV_EMERG = 0,
+ SEV_ALERT = 1,
+ SEV_CRIT = 2,
+ SEV_ERROR = 3,
+ SEV_WARN = 4,
+ SEV_NOTE = 5,
+ SEV_INFO = 6,
+ SEV_DEBUG = 7,
+ SEV_DEFAULT = 8
+ } severity_t;
+
+ ManagementAgent ();
+ virtual ~ManagementAgent ();
void configure (const std::string& dataDir, uint16_t interval,
qpid::broker::Broker* broker, int threadPoolSize);
@@ -55,41 +68,34 @@
void setExchange (qpid::broker::Exchange::shared_ptr mgmtExchange,
qpid::broker::Exchange::shared_ptr directExchange);
int getMaxThreads () { return threadPoolSize; }
- void registerClass (const std::string& packageName,
- const std::string& className,
- uint8_t* md5Sum,
- ManagementObject::writeSchemaCall_t schemaCall);
- void registerEvent (const std::string& packageName,
- const std::string& eventName,
- uint8_t* md5Sum,
- ManagementObject::writeSchemaCall_t schemaCall);
- ObjectId addObject (ManagementObject* object,
- uint64_t persistId = 0);
- void raiseEvent(const ManagementEvent& event, severity_t severity = SEV_DEFAULT);
- void clientAdded (const std::string& routingKey);
+ QPID_BROKER_EXTERN void registerClass (const std::string& packageName,
+ const std::string& className,
+ uint8_t* md5Sum,
+ ManagementObject::writeSchemaCall_t schemaCall);
+ QPID_BROKER_EXTERN void registerEvent (const std::string& packageName,
+ const std::string& eventName,
+ uint8_t* md5Sum,
+ ManagementObject::writeSchemaCall_t schemaCall);
+ QPID_BROKER_EXTERN ObjectId addObject (ManagementObject* object,
+ uint64_t persistId = 0);
+ QPID_BROKER_EXTERN void raiseEvent(const ManagementEvent& event,
+ severity_t severity = SEV_DEFAULT);
+ QPID_BROKER_EXTERN void clientAdded (const std::string& routingKey);
+
bool dispatchCommand (qpid::broker::Deliverable& msg,
const std::string& routingKey,
const framing::FieldTable* args);
- const framing::Uuid& getUuid() const { return uuid; }
- // Stubs for remote management agent calls
- void init(const std::string&, uint16_t, uint16_t, bool,
- const std::string&, const std::string&, const std::string&,
- const std::string&, const std::string&) { assert(0); }
- void init(const client::ConnectionSettings&, uint16_t, bool, const std::string&) { assert(0); }
- uint32_t pollCallbacks (uint32_t) { assert(0); return 0; }
- int getSignalFd () { assert(0); return -1; }
+ const framing::Uuid& getUuid() const { return uuid; }
void setAllocator(std::auto_ptr<IdAllocator> allocator);
uint64_t allocateId(Manageable* object);
private:
- friend class ManagementAgent;
-
struct Periodic : public qpid::broker::TimerTask
{
- ManagementBroker& broker;
+ ManagementAgent& agent;
- Periodic (ManagementBroker& broker, uint32_t seconds);
+ Periodic (ManagementAgent& agent, uint32_t seconds);
virtual ~Periodic ();
void fire ();
};
@@ -239,4 +245,4 @@
}}
-#endif /*!_ManagementBroker_*/
+#endif /*!_ManagementAgent_*/
Propchange: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h
------------------------------------------------------------------------------
svn:mergeinfo =
Modified: qpid/trunk/qpid/cpp/src/qpid/management/ManagementExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/management/ManagementExchange.cpp?rev=773570&r1=773569&r2=773570&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/management/ManagementExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/management/ManagementExchange.cpp Mon May 11 14:16:52 2009
@@ -27,14 +27,14 @@
using namespace qpid::framing;
using namespace qpid::sys;
-ManagementExchange::ManagementExchange (const string& _name, Manageable* _parent) :
- Exchange (_name, _parent), TopicExchange(_name, _parent) {}
+ManagementExchange::ManagementExchange (const string& _name, Manageable* _parent, Broker* b) :
+ Exchange (_name, _parent, b), TopicExchange(_name, _parent, b) {}
ManagementExchange::ManagementExchange (const std::string& _name,
bool _durable,
const FieldTable& _args,
- Manageable* _parent) :
- Exchange (_name, _durable, _args, _parent),
- TopicExchange(_name, _durable, _args, _parent) {}
+ Manageable* _parent, Broker* b) :
+ Exchange (_name, _durable, _args, _parent, b),
+ TopicExchange(_name, _durable, _args, _parent, b) {}
void ManagementExchange::route (Deliverable& msg,
const string& routingKey,
@@ -60,7 +60,7 @@
return TopicExchange::bind(queue, routingKey, args);
}
-void ManagementExchange::setManagmentAgent (ManagementBroker* agent)
+void ManagementExchange::setManagmentAgent (ManagementAgent* agent)
{
managementAgent = agent;
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org