diff options
author | Kim van der Riet <kpvdr@apache.org> | 2008-04-04 18:14:42 +0000 |
---|---|---|
committer | Kim van der Riet <kpvdr@apache.org> | 2008-04-04 18:14:42 +0000 |
commit | a2ea9d432dc5713dadd4c710a982cc466de3ea8b (patch) | |
tree | d7c955359c88b80b24c4f70146309a806511adda /cpp/managementgen/schema.py | |
parent | 2193d76646028d97b7bfff69335d4239954adbe5 (diff) | |
download | qpid-python-a2ea9d432dc5713dadd4c710a982cc466de3ea8b.tar.gz |
Patch from Ted Ross (see QPID-902): This patch contains the following improvements for management:\n1) Schema display cleaned up in the python mgmt-cli\n2) Locking added automatically to management object accessors (manual locking removed from broker/Queue.cpp)\n3) Schemas are now pre-registered with the management agent using a package initializer. This allows management consoles to get schema information for a class even if no instances of the class exist.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@644806 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/managementgen/schema.py')
-rwxr-xr-x | cpp/managementgen/schema.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/cpp/managementgen/schema.py b/cpp/managementgen/schema.py index fd76ba9112..44fc091372 100755 --- a/cpp/managementgen/schema.py +++ b/cpp/managementgen/schema.py @@ -78,6 +78,7 @@ class SchemaType: def genAccessor (self, stream, varName, changeFlag = None): if self.accessor == "direct": stream.write (" inline void set_" + varName + " (" + self.cpp + " val){\n"); + stream.write (" sys::RWlock::ScopedWlock writeLock (accessLock);\n") if self.style != "mma": stream.write (" " + varName + " = val;\n"); if self.style == "wm": @@ -97,6 +98,7 @@ class SchemaType: stream.write (" }\n"); elif self.accessor == "counter": stream.write (" inline void inc_" + varName + " (" + self.cpp + " by = 1){\n"); + stream.write (" sys::RWlock::ScopedWlock writeLock (accessLock);\n") stream.write (" " + varName + " += by;\n") if self.style == "wm": stream.write (" if (" + varName + "High < " + varName + ")\n") @@ -105,6 +107,7 @@ class SchemaType: stream.write (" " + changeFlag + " = true;\n") stream.write (" }\n"); stream.write (" inline void dec_" + varName + " (" + self.cpp + " by = 1){\n"); + stream.write (" sys::RWlock::ScopedWlock writeLock (accessLock);\n") stream.write (" " + varName + " -= by;\n") if self.style == "wm": stream.write (" if (" + varName + "Low > " + varName + ")\n") @@ -796,6 +799,9 @@ class SchemaClass: def genNameLower (self, stream, variables): stream.write (self.name.lower ()) + def genNamePackageCap (self, stream, variables): + stream.write (self.packageName.capitalize ()) + def genNamePackageLower (self, stream, variables): stream.write (self.packageName.lower ()) @@ -867,3 +873,28 @@ class PackageSchema: def getClasses (self): return self.classes + + def genPackageNameUpper (self, stream, variables): + stream.write (self.packageName.upper ()) + + def genPackageNameCap (self, stream, variables): + stream.write (self.packageName.capitalize ()) + + def genClassIncludes (self, stream, variables): + for _class in self.classes: + stream.write ("#include \"qpid/management/") + _class.genNameCap (stream, variables) + stream.write (".h\"\n") + + def genClassRegisters (self, stream, variables): + for _class in self.classes: + stream.write ("agent->RegisterClass (") + _class.genNameCap (stream, variables) + stream.write ("::packageName, ") + _class.genNameCap (stream, variables) + stream.write ("::className, ") + _class.genNameCap (stream, variables) + stream.write ("::md5Sum, ") + _class.genNameCap (stream, variables) + stream.write ("::writeSchema);\n") + |