summaryrefslogtreecommitdiff
path: root/qpid/cpp/managementgen
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2009-05-11 14:16:52 +0000
committerTed Ross <tross@apache.org>2009-05-11 14:16:52 +0000
commit690e5d617c9aad8550905cf30a8380778c0f9e7a (patch)
tree855a30b9bee8760b083813a6166c8d1e981ad738 /qpid/cpp/managementgen
parent44e07189ca7b56b4f051035fddfffc948beeb162 (diff)
downloadqpid-python-690e5d617c9aad8550905cf30a8380778c0f9e7a.tar.gz
QPID-1843 - Cleaned up the interface to the broker's internal management agent.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@773570 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/managementgen')
-rwxr-xr-xqpid/cpp/managementgen/qmf-gen22
-rwxr-xr-xqpid/cpp/managementgen/qmfgen/generate.py20
-rwxr-xr-xqpid/cpp/managementgen/qmfgen/schema.py9
-rw-r--r--qpid/cpp/managementgen/qmfgen/templates/Class.cpp7
-rw-r--r--qpid/cpp/managementgen/qmfgen/templates/Class.h6
-rw-r--r--qpid/cpp/managementgen/qmfgen/templates/Event.cpp2
-rw-r--r--qpid/cpp/managementgen/qmfgen/templates/Package.h2
7 files changed, 51 insertions, 17 deletions
diff --git a/qpid/cpp/managementgen/qmf-gen b/qpid/cpp/managementgen/qmf-gen
index c6cfca5f83..ebc07137ae 100755
--- a/qpid/cpp/managementgen/qmf-gen
+++ b/qpid/cpp/managementgen/qmf-gen
@@ -45,6 +45,8 @@ parser.add_option("-p", "--gen-prefix", dest="genprefix", default="",
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 @@ if len(args) == 0:
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 = {}
diff --git a/qpid/cpp/managementgen/qmfgen/generate.py b/qpid/cpp/managementgen/qmfgen/generate.py
index 255d41ea0e..7173c2faa1 100755
--- a/qpid/cpp/managementgen/qmfgen/generate.py
+++ b/qpid/cpp/managementgen/qmfgen/generate.py
@@ -388,30 +388,39 @@ class Generator:
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 @@ class Generator:
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)
diff --git a/qpid/cpp/managementgen/qmfgen/schema.py b/qpid/cpp/managementgen/qmfgen/schema.py
index 69823d6de0..3b53830c69 100755
--- a/qpid/cpp/managementgen/qmfgen/schema.py
+++ b/qpid/cpp/managementgen/qmfgen/schema.py
@@ -754,6 +754,9 @@ class SchemaEvent:
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 @@ class SchemaClass:
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 @@ class SchemaPackage:
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 ("}")
diff --git a/qpid/cpp/managementgen/qmfgen/templates/Class.cpp b/qpid/cpp/managementgen/qmfgen/templates/Class.cpp
index 247e1090ff..973d92586a 100644
--- a/qpid/cpp/managementgen/qmfgen/templates/Class.cpp
+++ b/qpid/cpp/managementgen/qmfgen/templates/Class.cpp
@@ -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 @@ string /*MGEN:Class.NameCap*/::className = string ("/*MGEN:Class.NameLower*/
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 @@ uint8_t /*MGEN:Class.NameCap*/::md5Sum[16] =
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;
diff --git a/qpid/cpp/managementgen/qmfgen/templates/Class.h b/qpid/cpp/managementgen/qmfgen/templates/Class.h
index 0bf9911895..225090f0a9 100644
--- a/qpid/cpp/managementgen/qmfgen/templates/Class.h
+++ b/qpid/cpp/managementgen/qmfgen/templates/Class.h
@@ -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*/
diff --git a/qpid/cpp/managementgen/qmfgen/templates/Event.cpp b/qpid/cpp/managementgen/qmfgen/templates/Event.cpp
index cdb40c6d79..2ffec8bcdf 100644
--- a/qpid/cpp/managementgen/qmfgen/templates/Event.cpp
+++ b/qpid/cpp/managementgen/qmfgen/templates/Event.cpp
@@ -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*/;
diff --git a/qpid/cpp/managementgen/qmfgen/templates/Package.h b/qpid/cpp/managementgen/qmfgen/templates/Package.h
index 0ad7060b9e..569c7cfb33 100644
--- a/qpid/cpp/managementgen/qmfgen/templates/Package.h
+++ b/qpid/cpp/managementgen/qmfgen/templates/Package.h
@@ -23,7 +23,7 @@
/*MGEN:Root.Disclaimer*/
-#include "qpid/agent/ManagementAgent.h"
+#include "qpid//*MGEN:Class.AgentHeaderLocation*//ManagementAgent.h"
namespace qmf {
/*MGEN:Class.OpenNamespaces*/