diff options
Diffstat (limited to 'qpid/cpp')
| -rwxr-xr-x | qpid/cpp/managementgen/schema.py | 6 | ||||
| -rw-r--r-- | qpid/cpp/managementgen/templates/Class.cpp | 4 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/Queue.cpp | 7 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/management/ManagementObject.h | 4 |
4 files changed, 13 insertions, 8 deletions
diff --git a/qpid/cpp/managementgen/schema.py b/qpid/cpp/managementgen/schema.py index 68e9bfd4e2..7a9f23ea76 100755 --- a/qpid/cpp/managementgen/schema.py +++ b/qpid/cpp/managementgen/schema.py @@ -76,7 +76,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") + 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 @@ 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,7 +104,6 @@ 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") @@ -114,7 +112,7 @@ class SchemaType: 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") diff --git a/qpid/cpp/managementgen/templates/Class.cpp b/qpid/cpp/managementgen/templates/Class.cpp index 5862685670..733e29188e 100644 --- a/qpid/cpp/managementgen/templates/Class.cpp +++ b/qpid/cpp/managementgen/templates/Class.cpp @@ -87,7 +87,7 @@ void /*MGEN:Class.NameCap*/::writeSchema (Buffer& buf) 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*/::writeConfig (Buffer& buf) void /*MGEN:Class.NameCap*/::writeInstrumentation (Buffer& buf, bool skipHeaders) { - sys::RWlock::ScopedWlock writeLock (accessLock); + sys::Mutex::ScopedLock mutex(accessLock); instChanged = false; if (!skipHeaders) diff --git a/qpid/cpp/src/qpid/broker/Queue.cpp b/qpid/cpp/src/qpid/broker/Queue.cpp index a8a7031757..2c9717caa0 100644 --- a/qpid/cpp/src/qpid/broker/Queue.cpp +++ b/qpid/cpp/src/qpid/broker/Queue.cpp @@ -130,6 +130,7 @@ void Queue::deliver(boost::intrusive_ptr<Message>& msg){ 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 @@ void Queue::deliver(boost::intrusive_ptr<Message>& msg){ } }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 @@ void Queue::recover(boost::intrusive_ptr<Message>& msg){ 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::recover(boost::intrusive_ptr<Message>& msg){ 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 @@ void Queue::consume(Consumer& c, bool requestExclusive){ consumerCount++; if (mgmtObject.get() != 0){ + sys::Mutex::ScopedLock mutex(mgmtObject->getLock()); mgmtObject->inc_consumers (); } } @@ -373,6 +378,7 @@ void Queue::cancel(Consumer& c){ consumerCount--; if(exclusive) exclusive = 0; if (mgmtObject.get() != 0){ + sys::Mutex::ScopedLock mutex(mgmtObject->getLock()); mgmtObject->dec_consumers (); } } @@ -403,6 +409,7 @@ void Queue::pop(){ 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 (); diff --git a/qpid/cpp/src/qpid/management/ManagementObject.h b/qpid/cpp/src/qpid/management/ManagementObject.h index 047f8c5754..2661cf2d96 100644 --- a/qpid/cpp/src/qpid/management/ManagementObject.h +++ b/qpid/cpp/src/qpid/management/ManagementObject.h @@ -44,7 +44,7 @@ class ManagementObject 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 @@ class ManagementObject deleted = true; } bool isDeleted (void) { return deleted; } - + sys::Mutex& getLock() { return accessLock; } }; typedef std::map<uint64_t,ManagementObject::shared_ptr> ManagementObjectMap; |
