diff options
| author | Ted Ross <tross@apache.org> | 2008-10-07 21:47:35 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2008-10-07 21:47:35 +0000 |
| commit | b56f731ad9d5d4b4b21f953dbd1103662b3d0b06 (patch) | |
| tree | 35a8f96fd5dc029c256bdda622c2a70b8ac2b8ec /qpid/cpp/managementgen | |
| parent | 15e9b9a0d064e142e6e971475338c0fff72579ad (diff) | |
| download | qpid-python-b56f731ad9d5d4b4b21f953dbd1103662b3d0b06.tar.gz | |
QPID-1327 - Event support for Management
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@702651 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/managementgen')
| -rwxr-xr-x | qpid/cpp/managementgen/qmf-gen | 2 | ||||
| -rwxr-xr-x | qpid/cpp/managementgen/qmf/generate.py | 18 | ||||
| -rw-r--r-- | qpid/cpp/managementgen/qmf/management-types.xml | 2 | ||||
| -rwxr-xr-x | qpid/cpp/managementgen/qmf/schema.py | 246 | ||||
| -rw-r--r-- | qpid/cpp/managementgen/qmf/templates/Class.cpp | 11 | ||||
| -rw-r--r-- | qpid/cpp/managementgen/qmf/templates/Class.h | 12 | ||||
| -rw-r--r-- | qpid/cpp/managementgen/qmf/templates/Event.cpp | 77 | ||||
| -rw-r--r-- | qpid/cpp/managementgen/qmf/templates/Event.h | 58 |
8 files changed, 315 insertions, 111 deletions
diff --git a/qpid/cpp/managementgen/qmf-gen b/qpid/cpp/managementgen/qmf-gen index 523579fe6c..62362e3cad 100755 --- a/qpid/cpp/managementgen/qmf-gen +++ b/qpid/cpp/managementgen/qmf-gen @@ -58,6 +58,8 @@ for schemafile in args: 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) diff --git a/qpid/cpp/managementgen/qmf/generate.py b/qpid/cpp/managementgen/qmf/generate.py index 7346200a28..958728d739 100755 --- a/qpid/cpp/managementgen/qmf/generate.py +++ b/qpid/cpp/managementgen/qmf/generate.py @@ -250,6 +250,14 @@ class Generator: path = self.packagePath + _class.getNameCap () + extension return path + def targetEventFile (self, event, templateFile): + dot = templateFile.find(".") + if dot == -1: + raise ValueError ("Invalid template file name %s" % templateFile) + extension = templateFile[dot:len (templateFile)] + path = self.packagePath + "Event" + event.getNameCap () + extension + return path + def targetMethodFile (self, method, templateFile): """ Return the file name for a method file """ dot = templateFile.rfind(".") @@ -293,6 +301,16 @@ class Generator: stream = template.expand (_class) self.writeIfChanged (stream, target, force) + def makeEventFiles (self, templateFile, schema, force=False): + """ Generate an expanded template per schema event """ + events = schema.getEvents() + template = Template (self.input + templateFile, self) + 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): """ Generate an expanded template per method-with-arguments """ classes = schema.getClasses () diff --git a/qpid/cpp/managementgen/qmf/management-types.xml b/qpid/cpp/managementgen/qmf/management-types.xml index 6e34421d99..626880afb3 100644 --- a/qpid/cpp/managementgen/qmf/management-types.xml +++ b/qpid/cpp/managementgen/qmf/management-types.xml @@ -30,7 +30,7 @@ <type name="int64" base="S64" cpp="int64_t" encode="@.putInt64(#)" decode="# = @.getInt64()" accessor="direct" init="0"/> <type name="bool" base="BOOL" cpp="uint8_t" encode="@.putOctet(#?1:0)" decode="# = @.getOctet()==1" accessor="direct" init="0"/> <type name="sstr" base="SSTR" cpp="std::string" encode="@.putShortString(#)" decode="@.getShortString(#)" accessor="direct" init='""' byRef="y"/> -<type name="lstr" base="LSTR" cpp="std::string" encode="@.putLongString(#)" decode="@.getLongString(#)" accessor="direct" init='""' byRef="y"/> +<type name="lstr" base="LSTR" cpp="std::string" encode="@.putMediumString(#)" decode="@.getMediumString(#)" accessor="direct" init='""' byRef="y"/> <type name="absTime" base="ABSTIME" cpp="int64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" accessor="direct" init="0"/> <type name="deltaTime" base="DELTATIME" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" accessor="direct" init="0"/> <type name="float" base="FLOAT" cpp="float" encode="@.putFloat(#)" decode="# = @.getFloat()" accessor="direct" init="0."/> diff --git a/qpid/cpp/managementgen/qmf/schema.py b/qpid/cpp/managementgen/qmf/schema.py index 2ecf9c351f..48e697ab4a 100755 --- a/qpid/cpp/managementgen/qmf/schema.py +++ b/qpid/cpp/managementgen/qmf/schema.py @@ -21,6 +21,32 @@ from xml.dom.minidom import parse, parseString, Node from cStringIO import StringIO import md5 +class Hash: + """ Manage the hash of an XML sub-tree """ + def __init__(self, node): + self.md5Sum = md5.new() + self._compute(node) + + def addSubHash(self, hash): + """ Use this method to add the hash of a dependend-on XML fragment that is not in the sub-tree """ + self.md5Sum.update(hash.getDigest()) + + def getDigest(self): + return self.md5Sum.digest() + + def _compute(self, node): + attrs = node.attributes + self.md5Sum.update(node.nodeName) + + for idx in range(attrs.length): + self.md5Sum.update(attrs.item(idx).nodeName) + self.md5Sum.update(attrs.item(idx).nodeValue) + + for child in node.childNodes: + if child.nodeType == Node.ELEMENT_NODE: + self._compute(child) + + #===================================================================================== # #===================================================================================== @@ -525,6 +551,7 @@ class SchemaArg: self.maxLen = None self.desc = None self.default = None + self.hash = Hash(node) attrs = node.attributes for idx in range (attrs.length): @@ -675,12 +702,12 @@ class SchemaMethod: # #===================================================================================== class SchemaEvent: - def __init__ (self, parent, node, typespec): - self.parent = parent - self.name = None - self.desc = None - self.args = [] - self.defaultSeverity = None + def __init__ (self, package, node, typespec, argset): + self.packageName = package + self.name = None + self.desc = None + self.args = [] + self.hash = Hash(node) attrs = node.attributes for idx in range (attrs.length): @@ -692,72 +719,96 @@ class SchemaEvent: elif key == 'desc': self.desc = val - elif key == 'defaultSeverity': - self.defaultSeverity = val + elif key == 'args': + list = val.replace(" ", "").split(",") + for item in list: + if item not in argset.args: + raise Exception("undefined argument '%s' in event" % item) + self.args.append(argset.args[item]) + self.hash.addSubHash(argset.args[item].hash) else: raise ValueError ("Unknown attribute in event '%s'" % key) - for child in node.childNodes: - if child.nodeType == Node.ELEMENT_NODE: - if child.nodeName == 'arg': - arg = SchemaArg (child, typespec) - self.args.append (arg) - else: - raise ValueError ("Unknown event tag '%s'" % child.nodeName) - def getName (self): return self.name + def getNameCap(self): + return capitalize(self.name) + def getFullName (self): - return capitalize(self.parent.getName()) + capitalize(self.name) + return capitalize(self.package + capitalize(self.name)) def getArgCount (self): return len (self.args) - def genMethodBody (self, stream, variables, classObject): - stream.write("void ") - classObject.genNameCap(stream, variables) - stream.write("::event_%s(" % self.name) - count = 0 + def genArgCount (self, stream, variables): + stream.write("%d" % len(self.args)) + + def genArgDeclarations(self, stream, variables): for arg in self.args: - arg.genFormalParam(stream, variables) - count += 1 - if count < len(self.args): - stream.write(", ") - stream.write(") {\n") - stream.write(" ::qpid::sys::Mutex::ScopedLock mutex(getMutex());\n") - stream.write(" Buffer* buf = startEventLH();\n") - stream.write(" objectId.encode(*buf);\n") - stream.write(" buf->putShortString(packageName);\n") - stream.write(" buf->putShortString(className);\n") - stream.write(" buf->putBin128(md5Sum);\n") - stream.write(" buf->putShortString(\"%s\");\n" % self.name) + if arg.type.type.byRef: + ref = "&" + else: + ref = "" + stream.write(" const %s%s %s;\n" % (arg.type.type.cpp, ref, arg.name)) + + def genCloseNamespaces (self, stream, variables): + for item in self.packageName.split("."): + stream.write ("}") + + def genConstructorArgs(self, stream, variables): + pre = "" for arg in self.args: - stream.write(" %s;\n" % arg.type.type.encode.replace("@", "(*buf)").replace("#", "_" + arg.name)) - stream.write(" finishEventLH(buf);\n") - stream.write("}\n\n") + if arg.type.type.byRef: + ref = "&" + else: + ref = "" + stream.write("%sconst %s%s _%s" % (pre, arg.type.type.cpp, ref, arg.name)) + pre = ",\n " - def genMethodDecl (self, stream, variables): - stream.write(" void event_%s(" % self.name) - count = 0 + def genConstructorInits(self, stream, variables): + pre = "" for arg in self.args: - arg.genFormalParam(stream, variables) - count += 1 - if count < len(self.args): - stream.write(", ") - stream.write(");\n") + stream.write("%s%s(_%s)" % (pre, arg.name, arg.name)) + pre = ",\n " - def genSchema(self, stream, variables): - stream.write (" ft = FieldTable ();\n") - stream.write (" ft.setString (NAME, \"" + self.name + "\");\n") - stream.write (" ft.setInt (ARGCOUNT, " + str (len (self.args)) + ");\n") - if self.desc != None: - stream.write (" ft.setString (DESC, \"" + self.desc + "\");\n") - stream.write (" buf.put (ft);\n\n") + def genName(self, stream, variables): + stream.write(self.name) + + def genNameCap(self, stream, variables): + stream.write(capitalize(self.name)) + + def genNamespace (self, stream, variables): + stream.write("::".join(self.packageName.split("."))) + + def genNameLower(self, stream, variables): + stream.write(self.name.lower()) + + def genNameUpper(self, stream, variables): + stream.write(self.name.upper()) + + def genNamePackageLower(self, stream, variables): + stream.write(self.packageName.lower()) + + def genOpenNamespaces (self, stream, variables): + for item in self.packageName.split("."): + stream.write ("namespace %s {\n" % item) + + def genArgEncodes(self, stream, variables): + for arg in self.args: + stream.write(" " + arg.type.type.encode.replace("@", "buf").replace("#", arg.name) + ";\n") + + def genArgSchema(self, stream, variables): for arg in self.args: - arg.genSchema (stream, True) + arg.genSchema(stream, True) + def genSchemaMD5(self, stream, variables): + sum = self.hash.getDigest() + for idx in range (len (sum)): + if idx != 0: + stream.write (",") + stream.write (hex (ord (sum[idx]))) class SchemaClass: @@ -768,9 +819,7 @@ class SchemaClass: self.methods = [] self.events = [] self.options = options - self.md5Sum = md5.new () - - self.hash (node) + self.hash = Hash(node) attrs = node.attributes self.name = makeValidCppSymbol(attrs['name'].nodeValue) @@ -790,10 +839,6 @@ class SchemaClass: sub = SchemaMethod (self, child, typespec) self.methods.append (sub) - elif child.nodeName == 'event': - sub = SchemaEvent (self, child, typespec) - self.events.append (sub) - elif child.nodeName == 'group': self.expandFragment (child, fragments) @@ -820,24 +865,12 @@ class SchemaClass: result = result[0:pos] + "threadStats->" + result[pos:] start = pos + 9 + len(next[1]) - def hash (self, node): - attrs = node.attributes - self.md5Sum.update (node.nodeName) - - for idx in range (attrs.length): - self.md5Sum.update (attrs.item(idx).nodeName) - self.md5Sum.update (attrs.item(idx).nodeValue) - - for child in node.childNodes: - if child.nodeType == Node.ELEMENT_NODE: - self.hash (child) - def expandFragment (self, node, fragments): attrs = node.attributes name = attrs['name'].nodeValue for fragment in fragments: if fragment.name == name: - self.md5Sum.update (fragment.md5Sum.digest()) + self.hash.addSubHash(fragment.hash) for config in fragment.properties: self.properties.append (config) for inst in fragment.statistics: @@ -937,27 +970,12 @@ class SchemaClass: inArgCount = inArgCount + 1 if methodCount == 0: - stream.write ("string, Buffer&, Buffer& outBuf") + stream.write ("string&, Buffer&, Buffer& outBuf") else: if inArgCount == 0: - stream.write ("string methodName, Buffer&, Buffer& outBuf") + stream.write ("string& methodName, Buffer&, Buffer& outBuf") else: - stream.write ("string methodName, Buffer& inBuf, Buffer& outBuf") - - def genEventCount (self, stream, variables): - stream.write ("%d" % len (self.events)) - - def genEventMethodBodies (self, stream, variables): - for event in self.events: - event.genMethodBody (stream, variables, self) - - def genEventMethodDecls (self, stream, variables): - for event in self.events: - event.genMethodDecl (stream, variables) - - def genEventSchema (self, stream, variables): - for event in self.events: - event.genSchema (stream, variables) + stream.write ("string& methodName, Buffer& inBuf, Buffer& outBuf") def genHiLoStatResets (self, stream, variables): for inst in self.statistics: @@ -1124,7 +1142,7 @@ class SchemaClass: return def genSchemaMD5 (self, stream, variables): - sum = self.md5Sum.digest () + sum = self.hash.getDigest() for idx in range (len (sum)): if idx != 0: stream.write (",") @@ -1149,6 +1167,20 @@ class SchemaClass: stat.genWrite (stream) +class SchemaEventArgs: + def __init__(self, package, node, typespec, fragments, options): + self.packageName = package + self.options = options + self.args = {} + + children = node.childNodes + for child in children: + if child.nodeType == Node.ELEMENT_NODE: + if child.nodeName == 'arg': + arg = SchemaArg(child, typespec) + self.args[arg.name] = arg + else: + raise Exception("Unknown tag '%s' in <eventArguments>" % child.nodeName) class SchemaPackage: def __init__ (self, typefile, schemafile, options): @@ -1156,6 +1188,8 @@ class SchemaPackage: self.classes = [] self.fragments = [] self.typespec = TypeSpec (typefile) + self.eventArgSet = None + self.events = [] dom = parse (schemafile) document = dom.documentElement @@ -1179,6 +1213,15 @@ class SchemaPackage: self.fragments, options) self.fragments.append (cls) + elif child.nodeName == 'eventArguments': + if self.eventArgSet: + raise Exception("Only one <eventArguments> may appear in a package") + self.eventArgSet = SchemaEventArgs(self.packageName, child, self.typespec, self.fragments, options) + + elif child.nodeName == 'event': + event = SchemaEvent(self.packageName, child, self.typespec, self.eventArgSet) + self.events.append(event) + else: raise ValueError ("Unknown schema tag '%s'" % child.nodeName) @@ -1194,6 +1237,9 @@ class SchemaPackage: def getClasses (self): return self.classes + def getEvents(self): + return self.events + def genCloseNamespaces (self, stream, variables): for item in self.packageName.split("."): stream.write ("}") @@ -1217,12 +1263,20 @@ class SchemaPackage: stream.write ("#include \"") _class.genNameCap (stream, variables) stream.write (".h\"\n") + for _event in self.events: + stream.write ("#include \"Event") + _event.genNameCap(stream, variables) + stream.write (".h\"\n") - def genClassRegisters (self, stream, variables): + def genClassRegisters(self, stream, variables): for _class in self.classes: - stream.write (" ") - _class.genNameCap (stream, variables) - stream.write ("::registerClass(agent);\n") + stream.write(" ") + _class.genNameCap(stream, variables) + stream.write("::registerSelf(agent);\n") + for _event in self.events: + stream.write(" Event") + _event.genNameCap(stream, variables) + stream.write("::registerSelf(agent);\n") #===================================================================================== diff --git a/qpid/cpp/managementgen/qmf/templates/Class.cpp b/qpid/cpp/managementgen/qmf/templates/Class.cpp index 964e6f8349..0a69939821 100644 --- a/qpid/cpp/managementgen/qmf/templates/Class.cpp +++ b/qpid/cpp/managementgen/qmf/templates/Class.cpp @@ -85,9 +85,9 @@ namespace { const string DEFAULT("default"); } -void /*MGEN:Class.NameCap*/::registerClass(ManagementAgent* agent) +void /*MGEN:Class.NameCap*/::registerSelf(ManagementAgent* agent) { - agent->RegisterClass(packageName, className, md5Sum, writeSchema); + agent->registerClass(packageName, className, md5Sum, writeSchema); } void /*MGEN:Class.NameCap*/::writeSchema (Buffer& buf) @@ -95,13 +95,13 @@ void /*MGEN:Class.NameCap*/::writeSchema (Buffer& buf) FieldTable ft; // Schema class header: + buf.putOctet (CLASS_KIND_TABLE); buf.putShortString (packageName); // Package Name buf.putShortString (className); // Class Name buf.putBin128 (md5Sum); // Schema Hash buf.putShort (/*MGEN:Class.ConfigCount*/); // Config Element Count buf.putShort (/*MGEN:Class.InstCount*/); // Inst Element Count buf.putShort (/*MGEN:Class.MethodCount*/); // Method Count - buf.putShort (/*MGEN:Class.EventCount*/); // Event Count // Properties /*MGEN:Class.PropertySchema*/ @@ -109,8 +109,6 @@ void /*MGEN:Class.NameCap*/::writeSchema (Buffer& buf) /*MGEN:Class.StatisticSchema*/ // Methods /*MGEN:Class.MethodSchema*/ - // Events -/*MGEN:Class.EventSchema*/ } /*MGEN:IF(Class.ExistPerThreadStats)*/ @@ -176,9 +174,8 @@ void /*MGEN:Class.NameCap*/::doMethod (/*MGEN:Class.DoMethodArgs*/) { Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD; std::string text; + /*MGEN:Class.MethodHandlers*/ outBuf.putLong(status); outBuf.putShortString(Manageable::StatusText(status, text)); } - -/*MGEN:Class.EventMethodBodies*/ diff --git a/qpid/cpp/managementgen/qmf/templates/Class.h b/qpid/cpp/managementgen/qmf/templates/Class.h index 99ebc68789..2a995c95a5 100644 --- a/qpid/cpp/managementgen/qmf/templates/Class.h +++ b/qpid/cpp/managementgen/qmf/templates/Class.h @@ -72,7 +72,7 @@ class /*MGEN:Class.NameCap*/ : public ::qpid::management::ManagementObject void writeProperties (::qpid::framing::Buffer& buf); void writeStatistics (::qpid::framing::Buffer& buf, bool skipHeaders = false); - void doMethod (std::string methodName, + void doMethod (std::string& methodName, ::qpid::framing::Buffer& inBuf, ::qpid::framing::Buffer& outBuf); writeSchemaCall_t getWriteSchemaCall(void) { return writeSchema; } @@ -88,17 +88,15 @@ class /*MGEN:Class.NameCap*/ : public ::qpid::management::ManagementObject /*MGEN:Class.SetGeneralReferenceDeclaration*/ - static void registerClass (::qpid::management::ManagementAgent* agent); - std::string& getPackageName (void) { return packageName; } - std::string& getClassName (void) { return className; } - uint8_t* getMd5Sum (void) { return md5Sum; } + static void registerSelf (::qpid::management::ManagementAgent* agent); + std::string& getPackageName (void) const { return packageName; } + std::string& getClassName (void) const { return className; } + uint8_t* getMd5Sum (void) const { return md5Sum; } // Method IDs /*MGEN:Class.MethodIdDeclarations*/ // Accessor Methods /*MGEN:Class.AccessorMethods*/ - // Event Methods -/*MGEN:Class.EventMethodDecls*/ }; }/*MGEN:Class.CloseNamespaces*/ diff --git a/qpid/cpp/managementgen/qmf/templates/Event.cpp b/qpid/cpp/managementgen/qmf/templates/Event.cpp new file mode 100644 index 0000000000..cdb40c6d79 --- /dev/null +++ b/qpid/cpp/managementgen/qmf/templates/Event.cpp @@ -0,0 +1,77 @@ +/*MGEN:commentPrefix=//*/ +// +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +/*MGEN:Root.Disclaimer*/ + +#include "qpid/log/Statement.h" +#include "qpid/framing/FieldTable.h" +#include "qpid/management/Manageable.h" +#include "qpid/agent/ManagementAgent.h" +#include "Event/*MGEN:Event.NameCap*/.h" + +using namespace qmf::/*MGEN:Event.Namespace*/; +using namespace qpid::framing; +using qpid::management::ManagementAgent; +using qpid::management::Manageable; +using qpid::management::ManagementObject; +using qpid::management::Args; +using std::string; + +string Event/*MGEN:Event.NameCap*/::packageName = string ("/*MGEN:Event.NamePackageLower*/"); +string Event/*MGEN:Event.NameCap*/::eventName = string ("/*MGEN:Event.Name*/"); +uint8_t Event/*MGEN:Event.NameCap*/::md5Sum[16] = + {/*MGEN:Event.SchemaMD5*/}; + +Event/*MGEN:Event.NameCap*/::Event/*MGEN:Event.NameCap*/ (/*MGEN:Event.ConstructorArgs*/) : + /*MGEN:Event.ConstructorInits*/ +{} + +namespace { + const string NAME("name"); + const string TYPE("type"); + const string DESC("desc"); + const string ARGCOUNT("argCount"); + const string ARGS("args"); +} + +void Event/*MGEN:Event.NameCap*/::registerSelf(ManagementAgent* agent) +{ + agent->registerEvent(packageName, eventName, md5Sum, writeSchema); +} + +void Event/*MGEN:Event.NameCap*/::writeSchema (Buffer& buf) +{ + FieldTable ft; + + // Schema class header: + buf.putOctet (CLASS_KIND_EVENT); + buf.putShortString (packageName); // Package Name + buf.putShortString (eventName); // Event Name + buf.putBin128 (md5Sum); // Schema Hash + buf.putShort (/*MGEN:Event.ArgCount*/); // Argument Count + + // Arguments +/*MGEN:Event.ArgSchema*/ +} + +void Event/*MGEN:Event.NameCap*/::encode(::qpid::framing::Buffer& buf) const +{ +/*MGEN:Event.ArgEncodes*/ +} diff --git a/qpid/cpp/managementgen/qmf/templates/Event.h b/qpid/cpp/managementgen/qmf/templates/Event.h new file mode 100644 index 0000000000..a943c0c501 --- /dev/null +++ b/qpid/cpp/managementgen/qmf/templates/Event.h @@ -0,0 +1,58 @@ +/*MGEN:commentPrefix=//*/ +#ifndef _MANAGEMENT_/*MGEN:Event.NameUpper*/_ +#define _MANAGEMENT_/*MGEN:Event.NameUpper*/_ + +// +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +/*MGEN:Root.Disclaimer*/ + +#include "qpid/management/ManagementEvent.h" +#include "qpid/framing/FieldTable.h" +#include "qpid/framing/Uuid.h" + +namespace qmf { +/*MGEN:Event.OpenNamespaces*/ + +class Event/*MGEN:Event.NameCap*/ : public ::qpid::management::ManagementEvent +{ + private: + static void writeSchema (::qpid::framing::Buffer& buf); + static std::string packageName; + static std::string eventName; + static uint8_t md5Sum[16]; + +/*MGEN:Event.ArgDeclarations*/ + + public: + writeSchemaCall_t getWriteSchemaCall(void) { return writeSchema; } + + Event/*MGEN:Event.NameCap*/(/*MGEN:Event.ConstructorArgs*/); + ~Event/*MGEN:Class.NameCap*/() {}; + + static void registerSelf(::qpid::management::ManagementAgent* agent); + std::string& getPackageName() const { return packageName; } + std::string& getEventName() const { return eventName; } + uint8_t* getMd5Sum() const { return md5Sum; } + void encode(::qpid::framing::Buffer& buffer) const; +}; + +}/*MGEN:Event.CloseNamespaces*/ + +#endif /*!_MANAGEMENT_/*MGEN:Event.NameUpper*/_*/ |
