diff options
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/include/qpid/management/ManagementObject.h | 4 | ||||
| -rw-r--r-- | cpp/include/qpid/management/Mutex.h | 66 | ||||
| -rwxr-xr-x | cpp/managementgen/qmfgen/schema.py | 8 | ||||
| -rw-r--r-- | cpp/managementgen/qmfgen/templates/Class.cpp | 12 | ||||
| -rw-r--r-- | cpp/managementgen/qmfgen/templates/Event.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/Makefile.am | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/agent/ManagementAgentImpl.cpp | 54 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementAgent.cpp | 42 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementObject.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/management/Mutex.cpp | 29 |
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(); } + |
