summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp')
-rwxr-xr-xqpid/cpp/managementgen/schema.py6
-rw-r--r--qpid/cpp/managementgen/templates/Class.cpp4
-rw-r--r--qpid/cpp/src/qpid/broker/Queue.cpp7
-rw-r--r--qpid/cpp/src/qpid/management/ManagementObject.h4
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;