summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/qpid/management/ManagementObject.h4
-rw-r--r--cpp/include/qpid/management/Mutex.h66
-rwxr-xr-xcpp/managementgen/qmfgen/schema.py8
-rw-r--r--cpp/managementgen/qmfgen/templates/Class.cpp12
-rw-r--r--cpp/managementgen/qmfgen/templates/Event.cpp2
-rw-r--r--cpp/src/Makefile.am2
-rw-r--r--cpp/src/qpid/agent/ManagementAgentImpl.cpp54
-rw-r--r--cpp/src/qpid/management/ManagementAgent.cpp42
-rw-r--r--cpp/src/qpid/management/ManagementObject.cpp2
-rw-r--r--cpp/src/qpid/management/Mutex.cpp29
10 files changed, 159 insertions, 62 deletions
diff --git a/cpp/include/qpid/management/ManagementObject.h b/cpp/include/qpid/management/ManagementObject.h
index 0e9c7f0a0b..9538a3e831 100644
--- a/cpp/include/qpid/management/ManagementObject.h
+++ b/cpp/include/qpid/management/ManagementObject.h
@@ -23,7 +23,7 @@
*/
#include "qpid/sys/Time.h"
-#include "qpid/sys/Mutex.h"
+#include "qpid/management/Mutex.h"
#include "qpid/CommonImportExport.h"
#include "qpid/types/Variant.h"
#include <map>
@@ -139,7 +139,7 @@ protected:
mutable bool instChanged;
bool deleted;
Manageable* coreObject;
- mutable sys::Mutex accessLock;
+ mutable Mutex accessLock;
uint32_t flags;
static int nextThreadIndex;
diff --git a/cpp/include/qpid/management/Mutex.h b/cpp/include/qpid/management/Mutex.h
new file mode 100644
index 0000000000..ec1ff35402
--- /dev/null
+++ b/cpp/include/qpid/management/Mutex.h
@@ -0,0 +1,66 @@
+#ifndef _management_Mutex_h
+#define _management_Mutex_h
+
+/*
+ *
+ * Copyright (c) 2008 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+namespace qpid {
+ namespace sys {
+ class Mutex;
+ }
+
+ namespace management {
+
+ /**
+ * Scoped lock template: calls lock() in ctor, unlock() in dtor.
+ * L can be any class with lock() and unlock() functions.
+ */
+ template <class L> class ScopedLockTemplate {
+ public:
+ ScopedLockTemplate(L& l) : mutex(l) { mutex.lock(); }
+ ~ScopedLockTemplate() { mutex.unlock(); }
+ private:
+ L& mutex;
+ };
+
+ template <class L> class ScopedUnlockTemplate {
+ public:
+ ScopedUnlockTemplate(L& l) : mutex(l) { mutex.unlock(); }
+ ~ScopedUnlockTemplate() { mutex.lock(); }
+ private:
+ L& mutex;
+ };
+
+ class Mutex {
+ public:
+ typedef ScopedLockTemplate<Mutex> ScopedLock;
+ typedef ScopedUnlockTemplate<Mutex> ScopedUnlock;
+
+ Mutex();
+ ~Mutex();
+ void lock();
+ void unlock();
+ private:
+ sys::Mutex* impl;
+ };
+ }
+}
+
+#endif
+
diff --git a/cpp/managementgen/qmfgen/schema.py b/cpp/managementgen/qmfgen/schema.py
index 1206b0082d..ec0ccc3462 100755
--- a/cpp/managementgen/qmfgen/schema.py
+++ b/cpp/managementgen/qmfgen/schema.py
@@ -148,7 +148,7 @@ class SchemaType:
if self.accessor == "direct":
stream.write (" inline void set_" + varName + " (" + self.asArg + " val) {\n");
if not self.perThread:
- stream.write (" ::qpid::sys::Mutex::ScopedLock mutex(accessLock);\n")
+ stream.write (" ::qpid::management::Mutex::ScopedLock mutex(accessLock);\n")
if self.style != "mma":
stream.write (" " + prefix + varName + " = val;\n")
if optional:
@@ -171,7 +171,7 @@ class SchemaType:
if self.style != "mma":
stream.write (" inline " + self.asArg + " get_" + varName + "() {\n");
if not self.perThread:
- stream.write (" ::qpid::sys::Mutex::ScopedLock mutex(accessLock);\n")
+ stream.write (" ::qpid::management::Mutex::ScopedLock mutex(accessLock);\n")
stream.write (" return " + prefix + varName + ";\n")
stream.write (" }\n")
if optional:
@@ -186,7 +186,7 @@ class SchemaType:
elif self.accessor == "counter":
stream.write (" inline void inc_" + varName + " (" + self.asArg + " by = 1) {\n");
if not self.perThread:
- stream.write (" ::qpid::sys::Mutex::ScopedLock mutex(accessLock);\n")
+ stream.write (" ::qpid::management::Mutex::ScopedLock mutex(accessLock);\n")
stream.write (" " + prefix + varName + " += by;\n")
if self.style == "wm":
stream.write (" if (" + varName + "High < " + varName + ")\n")
@@ -196,7 +196,7 @@ class SchemaType:
stream.write (" }\n");
stream.write (" inline void dec_" + varName + " (" + self.asArg + " by = 1) {\n");
if not self.perThread:
- stream.write (" ::qpid::sys::Mutex::ScopedLock mutex(accessLock);\n")
+ stream.write (" ::qpid::management::Mutex::ScopedLock mutex(accessLock);\n")
stream.write (" " + prefix + varName + " -= by;\n")
if self.style == "wm":
stream.write (" if (" + varName + "Low > " + varName + ")\n")
diff --git a/cpp/managementgen/qmfgen/templates/Class.cpp b/cpp/managementgen/qmfgen/templates/Class.cpp
index 9a9af07b28..cfc142e18c 100644
--- a/cpp/managementgen/qmfgen/templates/Class.cpp
+++ b/cpp/managementgen/qmfgen/templates/Class.cpp
@@ -20,7 +20,6 @@
/*MGEN:Root.Disclaimer*/
-#include "qpid/log/Statement.h"
#include "qpid/management/Manageable.h"
#include "qpid/management/Buffer.h"
#include "qpid/types/Variant.h"
@@ -35,6 +34,7 @@ using qpid::management::ManagementAgent;
using qpid::management::Manageable;
using qpid::management::ManagementObject;
using qpid::management::Args;
+using qpid::management::Mutex;
using std::string;
string /*MGEN:Class.NameCap*/::packageName = string ("/*MGEN:Class.NamePackageLower*/");
@@ -149,7 +149,7 @@ void /*MGEN:Class.NameCap*/::readProperties (const std::string& _sBuf)
char *_tmpBuf = new char[_sBuf.length()];
memcpy(_tmpBuf, _sBuf.data(), _sBuf.length());
::qpid::management::Buffer buf(_tmpBuf, _sBuf.length());
- ::qpid::sys::Mutex::ScopedLock mutex(accessLock);
+ Mutex::ScopedLock mutex(accessLock);
{
std::string _tbuf;
@@ -172,7 +172,7 @@ void /*MGEN:Class.NameCap*/::writeProperties (std::string& _sBuf) const
char _msgChars[_bufSize];
::qpid::management::Buffer buf(_msgChars, _bufSize);
- ::qpid::sys::Mutex::ScopedLock mutex(accessLock);
+ Mutex::ScopedLock mutex(accessLock);
configChanged = false;
{
@@ -200,7 +200,7 @@ void /*MGEN:Class.NameCap*/::writeStatistics (std::string& _sBuf, bool skipHeade
char _msgChars[_bufSize];
::qpid::management::Buffer buf(_msgChars, _bufSize);
- ::qpid::sys::Mutex::ScopedLock mutex(accessLock);
+ Mutex::ScopedLock mutex(accessLock);
instChanged = false;
/*MGEN:IF(Class.ExistPerThreadAssign)*/
for (int idx = 0; idx < maxThreads; idx++) {
@@ -279,7 +279,7 @@ void /*MGEN:Class.NameCap*/::mapEncodeValues (::qpid::types::Variant::Map& _map,
bool includeStatistics)
{
using namespace ::qpid::types;
- ::qpid::sys::Mutex::ScopedLock mutex(accessLock);
+ Mutex::ScopedLock mutex(accessLock);
if (includeProperties) {
configChanged = false;
@@ -320,7 +320,7 @@ void /*MGEN:Class.NameCap*/::mapEncodeValues (::qpid::types::Variant::Map& _map,
void /*MGEN:Class.NameCap*/::mapDecodeValues (const ::qpid::types::Variant::Map& _map)
{
::qpid::types::Variant::Map::const_iterator _i;
- ::qpid::sys::Mutex::ScopedLock mutex(accessLock);
+ Mutex::ScopedLock mutex(accessLock);
/*MGEN:IF(Class.ExistOptionals)*/
bool _found;
/*MGEN:ENDIF*/
diff --git a/cpp/managementgen/qmfgen/templates/Event.cpp b/cpp/managementgen/qmfgen/templates/Event.cpp
index 94de331611..a8fdd0bd92 100644
--- a/cpp/managementgen/qmfgen/templates/Event.cpp
+++ b/cpp/managementgen/qmfgen/templates/Event.cpp
@@ -20,7 +20,6 @@
/*MGEN:Root.Disclaimer*/
-#include "qpid/log/Statement.h"
#include "qpid/management/Manageable.h"
#include "qpid/management/Buffer.h"
#include "qpid/types/Variant.h"
@@ -33,6 +32,7 @@ using qpid::management::ManagementAgent;
using qpid::management::Manageable;
using qpid::management::ManagementObject;
using qpid::management::Args;
+using qpid::management::Mutex;
using std::string;
string Event/*MGEN:Event.NameCap*/::packageName = string ("/*MGEN:Event.NamePackageLower*/");
diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am
index 6692701502..757f08339c 100644
--- a/cpp/src/Makefile.am
+++ b/cpp/src/Makefile.am
@@ -423,6 +423,7 @@ libqpidcommon_la_SOURCES += \
qpid/management/Buffer.cpp \
qpid/management/Manageable.cpp \
qpid/management/ManagementObject.cpp \
+ qpid/management/Mutex.cpp \
qpid/memory.h \
qpid/pointer_to_other.h \
qpid/ptr_map.h \
@@ -806,6 +807,7 @@ nobase_include_HEADERS += \
../include/qpid/management/Manageable.h \
../include/qpid/management/ManagementEvent.h \
../include/qpid/management/ManagementObject.h \
+ ../include/qpid/management/Mutex.h \
../include/qpid/sys/Condition.h \
../include/qpid/sys/ExceptionHolder.h \
../include/qpid/sys/IOHandle.h \
diff --git a/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/cpp/src/qpid/agent/ManagementAgentImpl.cpp
index 42bc36c4b8..bade1d2826 100644
--- a/cpp/src/qpid/agent/ManagementAgentImpl.cpp
+++ b/cpp/src/qpid/agent/ManagementAgentImpl.cpp
@@ -46,7 +46,7 @@ using qpid::amqp_0_10::MapCodec;
using qpid::amqp_0_10::ListCodec;
namespace {
- Mutex lock;
+ qpid::sys::Mutex lock;
bool disabled = false;
ManagementAgent* agent = 0;
int refCount = 0;
@@ -54,7 +54,7 @@ namespace {
ManagementAgent::Singleton::Singleton(bool disableManagement)
{
- Mutex::ScopedLock _lock(lock);
+ sys::Mutex::ScopedLock _lock(lock);
if (disableManagement && !disabled) {
disabled = true;
assert(refCount == 0); // can't disable after agent has been allocated
@@ -66,7 +66,7 @@ ManagementAgent::Singleton::Singleton(bool disableManagement)
ManagementAgent::Singleton::~Singleton()
{
- Mutex::ScopedLock _lock(lock);
+ sys::Mutex::ScopedLock _lock(lock);
refCount--;
if (refCount == 0 && !disabled) {
delete agent;
@@ -103,7 +103,7 @@ ManagementAgentImpl::~ManagementAgentImpl()
// Release the memory associated with stored management objects.
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
moveNewObjectsLH();
for (ManagementObjectMap::iterator iter = managementObjects.begin ();
@@ -186,7 +186,7 @@ void ManagementAgentImpl::registerClass(const string& packageName,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
PackageMap::iterator pIter = findOrAddPackage(packageName);
addClassLocal(ManagementItem::CLASS_KIND_TABLE, pIter, className, md5Sum, schemaCall);
}
@@ -196,7 +196,7 @@ void ManagementAgentImpl::registerEvent(const string& packageName,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
PackageMap::iterator pIter = findOrAddPackage(packageName);
addClassLocal(ManagementItem::CLASS_KIND_EVENT, pIter, eventName, md5Sum, schemaCall);
}
@@ -218,7 +218,7 @@ ObjectId ManagementAgentImpl::addObject(ManagementObject* object,
const std::string& key,
bool persistent)
{
- Mutex::ScopedLock lock(addLock);
+ sys::Mutex::ScopedLock lock(addLock);
uint16_t sequence = persistent ? 0 : bootSequence;
@@ -236,7 +236,7 @@ ObjectId ManagementAgentImpl::addObject(ManagementObject* object,
void ManagementAgentImpl::raiseEvent(const ManagementEvent& event, severity_t severity)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
Buffer outBuffer(eventBuffer, MA_BUFFER_SIZE);
uint8_t sev = (severity == SEV_DEFAULT) ? event.getSeverity() : (uint8_t) severity;
stringstream key;
@@ -269,7 +269,7 @@ void ManagementAgentImpl::raiseEvent(const ManagementEvent& event, severity_t se
uint32_t ManagementAgentImpl::pollCallbacks(uint32_t callLimit)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
if (inCallback) {
QPID_LOG(critical, "pollCallbacks invoked from the agent's thread!");
@@ -283,7 +283,7 @@ uint32_t ManagementAgentImpl::pollCallbacks(uint32_t callLimit)
QueuedMethod* item = methodQueue.front();
methodQueue.pop_front();
{
- Mutex::ScopedUnlock unlock(agentLock);
+ sys::Mutex::ScopedUnlock unlock(agentLock);
invokeMethodRequest(item->body, item->cid, item->replyTo);
delete item;
}
@@ -309,14 +309,14 @@ int ManagementAgentImpl::getSignalFd()
void ManagementAgentImpl::setSignalCallback(cb_t callback, void* context)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
notifyCallback = callback;
notifyContext = context;
}
void ManagementAgentImpl::setSignalCallback(Notifyable& _notifyable)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
notifyable = &_notifyable;
}
@@ -407,7 +407,7 @@ void ManagementAgentImpl::sendException(const string& replyToKey, const string&
void ManagementAgentImpl::handleSchemaRequest(Buffer& inBuffer, uint32_t sequence, const string& replyTo)
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
string packageName;
SchemaClassKey key;
@@ -441,7 +441,7 @@ void ManagementAgentImpl::handleSchemaRequest(Buffer& inBuffer, uint32_t sequenc
void ManagementAgentImpl::handleConsoleAddedIndication()
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
clientWasAdded = true;
QPID_LOG(trace, "RCVD ConsoleAddedInd");
@@ -680,7 +680,7 @@ void ManagementAgentImpl::handleLocateRequest(const string&, const string& cid,
QPID_LOG(trace, "SENT AgentLocateResponse replyTo=" << replyTo);
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
clientWasAdded = true;
}
}
@@ -688,7 +688,7 @@ void ManagementAgentImpl::handleLocateRequest(const string&, const string& cid,
void ManagementAgentImpl::handleMethodRequest(const string& body, const string& cid, const string& replyTo)
{
if (extThread) {
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
methodQueue.push_back(new QueuedMethod(cid, replyTo, body));
if (pipeHandle != 0) {
@@ -696,14 +696,14 @@ void ManagementAgentImpl::handleMethodRequest(const string& body, const string&
} else if (notifyable != 0) {
inCallback = true;
{
- Mutex::ScopedUnlock unlock(agentLock);
+ sys::Mutex::ScopedUnlock unlock(agentLock);
notifyable->notify();
}
inCallback = false;
} else if (notifyCallback != 0) {
inCallback = true;
{
- Mutex::ScopedUnlock unlock(agentLock);
+ sys::Mutex::ScopedUnlock unlock(agentLock);
notifyCallback(notifyContext);
}
inCallback = false;
@@ -820,7 +820,7 @@ ManagementAgentImpl::PackageMap::iterator ManagementAgentImpl::findOrAddPackage(
void ManagementAgentImpl::moveNewObjectsLH()
{
- Mutex::ScopedLock lock(addLock);
+ sys::Mutex::ScopedLock lock(addLock);
for (ManagementObjectMap::iterator iter = newManagementObjects.begin();
iter != newManagementObjects.end();
iter++)
@@ -872,7 +872,7 @@ void ManagementAgentImpl::encodeClassIndication(Buffer& buf,
void ManagementAgentImpl::periodicProcessing()
{
- Mutex::ScopedLock lock(agentLock);
+ sys::Mutex::ScopedLock lock(agentLock);
list<pair<ObjectId, ManagementObject*> > deleteList;
if (!connected)
@@ -1007,14 +1007,14 @@ void ManagementAgentImpl::ConnectionThread::run()
subscriptions->subscribe(agent, queueName.str(), dest);
QPID_LOG(info, "Connection established with broker");
{
- Mutex::ScopedLock _lock(connLock);
+ sys::Mutex::ScopedLock _lock(connLock);
if (shutdown)
return;
operational = true;
agent.connected = true;
agent.startProtocol();
try {
- Mutex::ScopedUnlock _unlock(connLock);
+ sys::Mutex::ScopedUnlock _unlock(connLock);
subscriptions->run();
} catch (exception) {}
@@ -1039,13 +1039,13 @@ void ManagementAgentImpl::ConnectionThread::run()
// sleep for "delay" seconds, but peridically check if the
// agent is shutting down so we don't hang for up to delayMax
// seconds during agent shutdown
- Mutex::ScopedLock _lock(connLock);
+ sys::Mutex::ScopedLock _lock(connLock);
if (shutdown)
return;
sleeping = true;
int totalSleep = 0;
do {
- Mutex::ScopedUnlock _unlock(connLock);
+ sys::Mutex::ScopedUnlock _unlock(connLock);
::sleep(delayMin);
totalSleep += delayMin;
} while (totalSleep < delay && !shutdown);
@@ -1109,7 +1109,7 @@ void ManagementAgentImpl::ConnectionThread::sendMessage(Message msg,
{
ConnectionThread::shared_ptr s;
{
- Mutex::ScopedLock _lock(connLock);
+ sys::Mutex::ScopedLock _lock(connLock);
if (!operational)
return;
s = subscriptions;
@@ -1142,7 +1142,7 @@ void ManagementAgentImpl::ConnectionThread::close()
{
ConnectionThread::shared_ptr s;
{
- Mutex::ScopedLock _lock(connLock);
+ sys::Mutex::ScopedLock _lock(connLock);
shutdown = true;
s = subscriptions;
}
@@ -1152,7 +1152,7 @@ void ManagementAgentImpl::ConnectionThread::close()
bool ManagementAgentImpl::ConnectionThread::isSleeping() const
{
- Mutex::ScopedLock _lock(connLock);
+ sys::Mutex::ScopedLock _lock(connLock);
return sleeping;
}
diff --git a/cpp/src/qpid/management/ManagementAgent.cpp b/cpp/src/qpid/management/ManagementAgent.cpp
index 4158b685ce..18cd0cdfee 100644
--- a/cpp/src/qpid/management/ManagementAgent.cpp
+++ b/cpp/src/qpid/management/ManagementAgent.cpp
@@ -44,10 +44,10 @@ using qpid::framing::Uuid;
using qpid::types::Variant;
using qpid::amqp_0_10::MapCodec;
using qpid::amqp_0_10::ListCodec;
+using qpid::sys::Mutex;
using namespace qpid::framing;
using namespace qpid::management;
using namespace qpid::broker;
-using namespace qpid::sys;
using namespace qpid;
using namespace std;
namespace _qmf = qmf::org::apache::qpid::broker;
@@ -80,7 +80,7 @@ ManagementAgent::RemoteAgent::~RemoteAgent ()
ManagementAgent::ManagementAgent (const bool qmfV1, const bool qmfV2) :
threadPoolSize(1), interval(10), broker(0), timer(0),
- startTime(uint64_t(Duration(now()))),
+ startTime(uint64_t(sys::Duration(sys::now()))),
suppressed(false),
qmf1Support(qmfV1), qmf2Support(qmfV2)
{
@@ -95,7 +95,7 @@ ManagementAgent::ManagementAgent (const bool qmfV1, const bool qmfV2) :
ManagementAgent::~ManagementAgent ()
{
{
- Mutex::ScopedLock lock (userLock);
+ sys::Mutex::ScopedLock lock (userLock);
// Reset the shared pointers to exchanges. If this is not done now, the exchanges
// will stick around until dExchange and mExchange are implicitly destroyed (long
@@ -231,7 +231,7 @@ void ManagementAgent::registerClass (const string& packageName,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
{
- Mutex::ScopedLock lock(userLock);
+ sys::Mutex::ScopedLock lock(userLock);
PackageMap::iterator pIter = findOrAddPackageLH(packageName);
addClassLH(ManagementItem::CLASS_KIND_TABLE, pIter, className, md5Sum, schemaCall);
}
@@ -241,7 +241,7 @@ void ManagementAgent::registerEvent (const string& packageName,
uint8_t* md5Sum,
ManagementObject::writeSchemaCall_t schemaCall)
{
- Mutex::ScopedLock lock(userLock);
+ sys::Mutex::ScopedLock lock(userLock);
PackageMap::iterator pIter = findOrAddPackageLH(packageName);
addClassLH(ManagementItem::CLASS_KIND_EVENT, pIter, eventName, md5Sum, schemaCall);
}
@@ -266,7 +266,7 @@ ObjectId ManagementAgent::addObject(ManagementObject* object, uint64_t persistId
object->setObjectId(objId);
{
- Mutex::ScopedLock lock (addLock);
+ sys::Mutex::ScopedLock lock (addLock);
ManagementObjectMap::iterator destIter = newManagementObjects.find(objId);
if (destIter != newManagementObjects.end()) {
if (destIter->second->isDeleted()) {
@@ -304,7 +304,7 @@ ObjectId ManagementAgent::addObject(ManagementObject* object,
object->setObjectId(objId);
{
- Mutex::ScopedLock lock (addLock);
+ sys::Mutex::ScopedLock lock (addLock);
ManagementObjectMap::iterator destIter = newManagementObjects.find(objId);
if (destIter != newManagementObjects.end()) {
if (destIter->second->isDeleted()) {
@@ -324,7 +324,7 @@ ObjectId ManagementAgent::addObject(ManagementObject* object,
void ManagementAgent::raiseEvent(const ManagementEvent& event, severity_t severity)
{
- Mutex::ScopedLock lock (userLock);
+ sys::Mutex::ScopedLock lock (userLock);
uint8_t sev = (severity == SEV_DEFAULT) ? event.getSeverity() : (uint8_t) severity;
if (qmf1Support) {
@@ -335,7 +335,7 @@ void ManagementAgent::raiseEvent(const ManagementEvent& event, severity_t severi
outBuffer.putShortString(event.getPackageName());
outBuffer.putShortString(event.getEventName());
outBuffer.putBin128(event.getMd5Sum());
- outBuffer.putLongLong(uint64_t(Duration(now())));
+ outBuffer.putLongLong(uint64_t(sys::Duration(sys::now())));
outBuffer.putOctet(sev);
std::string sBuf;
event.encode(sBuf);
@@ -359,7 +359,7 @@ void ManagementAgent::raiseEvent(const ManagementEvent& event, severity_t severi
event.getMd5Sum());
event.mapEncode(values);
map_["_values"] = values;
- map_["_timestamp"] = uint64_t(Duration(now()));
+ map_["_timestamp"] = uint64_t(sys::Duration(sys::now()));
map_["_severity"] = sev;
headers["method"] = "indication";
@@ -379,7 +379,7 @@ void ManagementAgent::raiseEvent(const ManagementEvent& event, severity_t severi
}
ManagementAgent::Periodic::Periodic (ManagementAgent& _agent, uint32_t _seconds)
- : TimerTask (qpid::sys::Duration((_seconds ? _seconds : 1) * qpid::sys::TIME_SEC),
+ : TimerTask (sys::Duration((_seconds ? _seconds : 1) * sys::TIME_SEC),
"ManagementAgent::periodicProcessing"),
agent(_agent) {}
@@ -538,7 +538,7 @@ void ManagementAgent::sendBuffer(const std::string& data,
void ManagementAgent::moveNewObjectsLH()
{
- Mutex::ScopedLock lock (addLock);
+ sys::Mutex::ScopedLock lock (addLock);
for (ManagementObjectMap::iterator iter = newManagementObjects.begin ();
iter != newManagementObjects.end ();
iter++) {
@@ -573,14 +573,14 @@ void ManagementAgent::periodicProcessing (void)
#define BUFSIZE 65536
#define HEADROOM 4096
QPID_LOG(trace, "Management agent periodic processing");
- Mutex::ScopedLock lock (userLock);
+ sys::Mutex::ScopedLock lock (userLock);
char msgChars[BUFSIZE];
uint32_t contentSize;
string routingKey;
list<pair<ObjectId, ManagementObject*> > deleteList;
std::string sBuf;
- uint64_t uptime = uint64_t(Duration(now())) - startTime;
+ uint64_t uptime = uint64_t(sys::Duration(sys::now())) - startTime;
static_cast<_qmf::Broker*>(broker->GetManagementObject())->set_uptime(uptime);
moveNewObjectsLH();
@@ -779,7 +779,7 @@ void ManagementAgent::periodicProcessing (void)
char msgChars[BUFSIZE];
Buffer msgBuffer(msgChars, BUFSIZE);
encodeHeader(msgBuffer, 'h');
- msgBuffer.putLongLong(uint64_t(Duration(now())));
+ msgBuffer.putLongLong(uint64_t(sys::Duration(sys::now())));
contentSize = BUFSIZE - msgBuffer.available ();
msgBuffer.reset ();
@@ -799,7 +799,7 @@ void ManagementAgent::periodicProcessing (void)
headers["qmf.agent"] = name_address;
map["_values"] = attrMap;
- map["_values"].asMap()["timestamp"] = uint64_t(Duration(now()));
+ map["_values"].asMap()["timestamp"] = uint64_t(sys::Duration(sys::now()));
map["_values"].asMap()["heartbeat_interval"] = interval;
string content;
@@ -890,7 +890,7 @@ bool ManagementAgent::dispatchCommand (Deliverable& deliverable,
const FieldTable* /*args*/,
const bool topic)
{
- Mutex::ScopedLock lock (userLock);
+ sys::Mutex::ScopedLock lock (userLock);
Message& msg = ((DeliverableMessage&) deliverable).getMessage ();
if (qmf1Support && topic) {
@@ -1022,7 +1022,7 @@ void ManagementAgent::handleMethodRequestLH (Buffer& inBuffer, string replyToKey
else
try {
outBuffer.record();
- Mutex::ScopedUnlock u(userLock);
+ sys::Mutex::ScopedUnlock u(userLock);
std::string outBuf;
iter->second->doMethod(methodName, inArgs, outBuf);
outBuffer.putRawData(outBuf);
@@ -1687,7 +1687,7 @@ void ManagementAgent::handleLocateRequestLH(const string&, const string& replyTo
headers["qmf.agent"] = name_address;
map["_values"] = attrMap;
- map["_values"].asMap()["timestamp"] = uint64_t(Duration(now()));
+ map["_values"].asMap()["timestamp"] = uint64_t(sys::Duration(sys::now()));
map["_values"].asMap()["heartbeat_interval"] = interval;
string content;
@@ -2109,13 +2109,13 @@ ManagementObjectMap::iterator ManagementAgent::numericFind(const ObjectId& oid)
void ManagementAgent::setAllocator(std::auto_ptr<IdAllocator> a)
{
- Mutex::ScopedLock lock (userLock);
+ sys::Mutex::ScopedLock lock (userLock);
allocator = a;
}
uint64_t ManagementAgent::allocateId(Manageable* object)
{
- Mutex::ScopedLock lock (userLock);
+ sys::Mutex::ScopedLock lock (userLock);
if (allocator.get()) return allocator->getIdFor(object);
return 0;
}
diff --git a/cpp/src/qpid/management/ManagementObject.cpp b/cpp/src/qpid/management/ManagementObject.cpp
index 46fc67d07f..eb1b32bf7c 100644
--- a/cpp/src/qpid/management/ManagementObject.cpp
+++ b/cpp/src/qpid/management/ManagementObject.cpp
@@ -331,7 +331,7 @@ void ManagementObject::setReference(ObjectId) {}
int ManagementObject::getThreadIndex() {
static QPID_TSS int thisIndex = -1;
if (thisIndex == -1) {
- sys::Mutex::ScopedLock mutex(accessLock);
+ Mutex::ScopedLock mutex(accessLock);
thisIndex = nextThreadIndex;
if (nextThreadIndex < maxThreads - 1)
nextThreadIndex++;
diff --git a/cpp/src/qpid/management/Mutex.cpp b/cpp/src/qpid/management/Mutex.cpp
new file mode 100644
index 0000000000..f05abb01dc
--- /dev/null
+++ b/cpp/src/qpid/management/Mutex.cpp
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (c) 2008 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "qpid/management/Mutex.h"
+#include "qpid/sys/Mutex.h"
+
+using namespace std;
+using namespace qpid::management;
+
+Mutex::Mutex() : impl(new sys::Mutex()) {}
+Mutex::~Mutex() { delete impl; }
+void Mutex::lock() { impl->lock(); }
+void Mutex::unlock() { impl->unlock(); }
+