summaryrefslogtreecommitdiff
path: root/cpp/managementgen/schema.py
diff options
context:
space:
mode:
authorKim van der Riet <kpvdr@apache.org>2008-04-04 18:14:42 +0000
committerKim van der Riet <kpvdr@apache.org>2008-04-04 18:14:42 +0000
commita2ea9d432dc5713dadd4c710a982cc466de3ea8b (patch)
treed7c955359c88b80b24c4f70146309a806511adda /cpp/managementgen/schema.py
parent2193d76646028d97b7bfff69335d4239954adbe5 (diff)
downloadqpid-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-xcpp/managementgen/schema.py31
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")
+