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 2008/05/22 15:42:05 UTC

svn commit: r659110 - in /incubator/qpid/trunk/qpid/cpp: managementgen/schema.py managementgen/templates/Class.cpp src/qpid/broker/Queue.cpp src/qpid/management/ManagementObject.h

Author: tross
Date: Thu May 22 06:42:05 2008
New Revision: 659110

URL: http://svn.apache.org/viewvc?rev=659110&view=rev
Log:
QPID-1088

Modified:
    incubator/qpid/trunk/qpid/cpp/managementgen/schema.py
    incubator/qpid/trunk/qpid/cpp/managementgen/templates/Class.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.h

Modified: incubator/qpid/trunk/qpid/cpp/managementgen/schema.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/schema.py?rev=659110&r1=659109&r2=659110&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/schema.py (original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/schema.py Thu May 22 06:42:05 2008
@@ -76,7 +76,7 @@
   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")
+      stream.write ("        sys::Mutex::ScopedLock mutex(accessLock);\n")
       if self.style != "mma":
         stream.write ("        " + varName + " = val;\n");
       if self.style == "wm":
@@ -96,7 +96,6 @@
       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,7 +104,6 @@
         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")
@@ -114,7 +112,7 @@
         stream.write ("        " + changeFlag + " = true;\n")
       stream.write ("    }\n");
       stream.write ("    inline void set_" + varName + " (" + self.cpp + " val){\n");
-      stream.write ("        sys::RWlock::ScopedWlock writeLock (accessLock);\n")
+      stream.write ("        sys::Mutex::ScopedLock mutex(accessLock);\n")
       stream.write ("        " + varName + " = val;\n");
       if self.style == "wm":
         stream.write ("        if (" + varName + "Low  > val)\n")

Modified: incubator/qpid/trunk/qpid/cpp/managementgen/templates/Class.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/templates/Class.cpp?rev=659110&r1=659109&r2=659110&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/templates/Class.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/templates/Class.cpp Thu May 22 06:42:05 2008
@@ -87,7 +87,7 @@
 
 void /*MGEN:Class.NameCap*/::writeConfig (Buffer& buf)
 {
-    sys::RWlock::ScopedRlock readLock (accessLock);
+    sys::Mutex::ScopedLock mutex(accessLock);
     configChanged = false;
 
     writeTimestamps (buf);
@@ -96,7 +96,7 @@
 
 void /*MGEN:Class.NameCap*/::writeInstrumentation (Buffer& buf, bool skipHeaders)
 {
-    sys::RWlock::ScopedWlock writeLock (accessLock);
+    sys::Mutex::ScopedLock mutex(accessLock);
     instChanged = false;
 
     if (!skipHeaders)

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=659110&r1=659109&r2=659110&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Thu May 22 06:42:05 2008
@@ -130,6 +130,7 @@
             push(msg);
             msg->enqueueComplete();
             if (mgmtObject.get() != 0) {
+                sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
                 mgmtObject->inc_msgTotalEnqueues ();
                 mgmtObject->inc_byteTotalEnqueues (msg->contentSize ());
                 mgmtObject->inc_msgDepth ();
@@ -137,6 +138,7 @@
             }
         }else {
             if (mgmtObject.get() != 0) {
+                sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
                 mgmtObject->inc_msgTotalEnqueues ();
                 mgmtObject->inc_byteTotalEnqueues (msg->contentSize ());
                 mgmtObject->inc_msgDepth ();
@@ -155,6 +157,7 @@
     push(msg);
     msg->enqueueComplete(); // mark the message as enqueued
     if (mgmtObject.get() != 0) {
+        sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
         mgmtObject->inc_msgTotalEnqueues ();
         mgmtObject->inc_byteTotalEnqueues (msg->contentSize ());
         mgmtObject->inc_msgPersistEnqueues ();
@@ -173,6 +176,7 @@
 void Queue::process(boost::intrusive_ptr<Message>& msg){
     push(msg);
     if (mgmtObject.get() != 0) {
+        sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
         mgmtObject->inc_msgTotalEnqueues ();
         mgmtObject->inc_byteTotalEnqueues (msg->contentSize ());
         mgmtObject->inc_msgTxnEnqueues ();
@@ -363,6 +367,7 @@
     consumerCount++;
 
     if (mgmtObject.get() != 0){
+        sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
         mgmtObject->inc_consumers ();
     }
 }
@@ -373,6 +378,7 @@
     consumerCount--;
     if(exclusive) exclusive = 0;
     if (mgmtObject.get() != 0){
+        sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
         mgmtObject->dec_consumers ();
     }
 }
@@ -403,6 +409,7 @@
 
     if (policy.get()) policy->dequeued(msg.payload->contentSize());
     if (mgmtObject.get() != 0){
+        sys::Mutex::ScopedLock mutex(mgmtObject->getLock());
         mgmtObject->inc_msgTotalDequeues  ();
         mgmtObject->inc_byteTotalDequeues (msg.payload->contentSize());
         mgmtObject->dec_msgDepth ();

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.h?rev=659110&r1=659109&r2=659110&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/ManagementObject.h Thu May 22 06:42:05 2008
@@ -44,7 +44,7 @@
     bool        instChanged;
     bool        deleted;
     Manageable* coreObject;
-    sys::RWlock accessLock;
+    sys::Mutex  accessLock;
 
     static const uint8_t TYPE_U8        = 1;
     static const uint8_t TYPE_U16       = 2;
@@ -112,7 +112,7 @@
         deleted     = true;
     }
     bool isDeleted (void) { return deleted; }
-
+    sys::Mutex& getLock() { return accessLock; }
 };
 
 typedef std::map<uint64_t,ManagementObject::shared_ptr> ManagementObjectMap;