diff options
| author | Ted Ross <tross@apache.org> | 2008-07-08 21:54:20 +0000 |
|---|---|---|
| committer | Ted Ross <tross@apache.org> | 2008-07-08 21:54:20 +0000 |
| commit | 391608a73f18a1797ab0c358f0a94364dc888eb2 (patch) | |
| tree | c7f26ec2072884a2e94a767a3d4f29d76c4e81c7 /cpp/src/qpid/management | |
| parent | 5515803c70dfeff04c190533e7f0187a0e732bf4 (diff) | |
| download | qpid-python-391608a73f18a1797ab0c358f0a94364dc888eb2.tar.gz | |
QPID-1170 - Remove boost dependency from management agent interface
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@674994 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/management')
| -rw-r--r-- | cpp/src/qpid/management/Manageable.h | 5 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementAgent.h | 53 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementBroker.cpp | 49 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementBroker.h | 29 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementObject.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/management/ManagementObject.h | 4 |
6 files changed, 51 insertions, 91 deletions
diff --git a/cpp/src/qpid/management/Manageable.h b/cpp/src/qpid/management/Manageable.h index 25c24588fc..e2b8980465 100644 --- a/cpp/src/qpid/management/Manageable.h +++ b/cpp/src/qpid/management/Manageable.h @@ -23,7 +23,6 @@ #include "ManagementObject.h" #include "Args.h" #include <string> -#include <boost/shared_ptr.hpp> namespace qpid { namespace management { @@ -50,9 +49,9 @@ class Manageable // management object. This object is always of a class derived from // the pure-virtual "ManagementObject". // - // This accessor function returns a shared_ptr to the management object. + // This accessor function returns a pointer to the management object. // - virtual ManagementObject::shared_ptr GetManagementObject (void) const = 0; + virtual ManagementObject* GetManagementObject (void) const = 0; // Every "Manageable" object must implement ManagementMethod. This // function is called when a remote management client invokes a method diff --git a/cpp/src/qpid/management/ManagementAgent.h b/cpp/src/qpid/management/ManagementAgent.h deleted file mode 100644 index c8a1b37823..0000000000 --- a/cpp/src/qpid/management/ManagementAgent.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef _ManagementAgent_ -#define _ManagementAgent_ - -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 "ManagementObject.h" - -namespace qpid { -namespace management { - -class ManagementAgent -{ - public: - - virtual ~ManagementAgent () {} - - typedef boost::shared_ptr<ManagementAgent> shared_ptr; - - static shared_ptr getAgent (void); - - virtual int getMaxThreads() = 0; - - virtual void RegisterClass (std::string packageName, - std::string className, - uint8_t* md5Sum, - ManagementObject::writeSchemaCall_t schemaCall) = 0; - virtual void addObject (ManagementObject::shared_ptr object, - uint32_t persistId = 0, - uint32_t persistBank = 4) = 0; -}; - -}} - -#endif /*!_ManagementAgent_*/ diff --git a/cpp/src/qpid/management/ManagementBroker.cpp b/cpp/src/qpid/management/ManagementBroker.cpp index 271a2ec73c..106033f76f 100644 --- a/cpp/src/qpid/management/ManagementBroker.cpp +++ b/cpp/src/qpid/management/ManagementBroker.cpp @@ -38,12 +38,12 @@ using namespace qpid::broker; using namespace qpid::sys; using namespace std; -ManagementAgent::shared_ptr ManagementBroker::agent; -bool ManagementBroker::enabled = 0; +ManagementAgent* ManagementBroker::agent; +bool ManagementBroker::enabled = 0; ManagementBroker::RemoteAgent::~RemoteAgent () { - if (mgmtObject.get () != 0) + if (mgmtObject != 0) mgmtObject->resourceDestroy (); } @@ -91,7 +91,19 @@ ManagementBroker::ManagementBroker (string _dataDir, uint16_t _interval, Managea } } -ManagementBroker::~ManagementBroker () {} +ManagementBroker::~ManagementBroker () +{ + Mutex::ScopedLock lock (userLock); + + moveNewObjectsLH(); + for (ManagementObjectMap::iterator iter = managementObjects.begin (); + iter != managementObjects.end (); + iter++) { + ManagementObject* object = iter->second; + delete object; + } + managementObjects.clear(); +} void ManagementBroker::writeData () { @@ -108,24 +120,25 @@ void ManagementBroker::writeData () void ManagementBroker::enableManagement (string dataDir, uint16_t interval, Manageable* broker, int threadPoolSize) { enabled = 1; - if (agent.get () == 0) - agent = shared_ptr (new ManagementBroker (dataDir, interval, broker, threadPoolSize)); + if (agent == 0) + agent = new ManagementBroker (dataDir, interval, broker, threadPoolSize); } -ManagementAgent::shared_ptr ManagementAgent::getAgent (void) +ManagementAgent* ManagementAgent::getAgent (void) { return ManagementBroker::agent; } void ManagementBroker::shutdown (void) { - if (agent.get () != 0) + if (agent != 0) { - ManagementBroker* broker = (ManagementBroker*) agent.get(); + ManagementBroker* broker = (ManagementBroker*) agent; broker->mExchange.reset (); broker->dExchange.reset (); - agent.reset (); + delete agent; + agent = 0; } } @@ -146,9 +159,9 @@ void ManagementBroker::RegisterClass (string packageName, AddClassLocal (pIter, className, md5Sum, schemaCall); } -void ManagementBroker::addObject (ManagementObject::shared_ptr object, - uint32_t persistId, - uint32_t persistBank) +uint64_t ManagementBroker::addObject (ManagementObject* object, + uint32_t persistId, + uint32_t persistBank) { Mutex::ScopedLock lock (addLock); uint64_t objectId; @@ -168,6 +181,7 @@ void ManagementBroker::addObject (ManagementObject::shared_ptr object, object->setObjectId (objectId); newManagementObjects[objectId] = object; + return objectId; } ManagementBroker::Periodic::Periodic (ManagementBroker& _broker, uint32_t _seconds) @@ -281,7 +295,7 @@ void ManagementBroker::PeriodicProcessing (void) iter != managementObjects.end (); iter++) { - ManagementObject::shared_ptr object = iter->second; + ManagementObject* object = iter->second; object->setAllChanged (); } } @@ -293,7 +307,7 @@ void ManagementBroker::PeriodicProcessing (void) iter != managementObjects.end (); iter++) { - ManagementObject::shared_ptr object = iter->second; + ManagementObject* object = iter->second; if (object->getConfigChanged () || object->isDeleted ()) { @@ -633,8 +647,7 @@ void ManagementBroker::handleAttachRequestLH (Buffer& inBuffer, string replyToKe RemoteAgent* agent = new RemoteAgent; agent->objIdBank = assignedBank; - agent->mgmtObject = management::Agent::shared_ptr - (new management::Agent (this, agent)); + agent->mgmtObject = new management::Agent (this, agent); agent->mgmtObject->set_sessionId (sessionId); agent->mgmtObject->set_label (label); agent->mgmtObject->set_registeredTo (broker->GetManagementObject()->getObjectId()); @@ -674,7 +687,7 @@ void ManagementBroker::handleGetQueryLH (Buffer& inBuffer, string replyToKey, ui iter != managementObjects.end (); iter++) { - ManagementObject::shared_ptr object = iter->second; + ManagementObject* object = iter->second; if (object->getClassName () == className) { Buffer outBuffer (outputBuffer, MA_BUFFER_SIZE); diff --git a/cpp/src/qpid/management/ManagementBroker.h b/cpp/src/qpid/management/ManagementBroker.h index 18d30096e5..5e9114c3f4 100644 --- a/cpp/src/qpid/management/ManagementBroker.h +++ b/cpp/src/qpid/management/ManagementBroker.h @@ -21,18 +21,16 @@ * under the License. * */ - #include "qpid/Options.h" #include "qpid/broker/Exchange.h" #include "qpid/broker/Timer.h" #include "qpid/framing/Uuid.h" #include "qpid/sys/Mutex.h" -#include "ManagementAgent.h" +#include "qpid/agent/ManagementAgent.h" #include "ManagementObject.h" #include "Manageable.h" #include "qpid/management/Agent.h" #include <qpid/framing/AMQFrame.h> -#include <boost/shared_ptr.hpp> namespace qpid { namespace management { @@ -48,9 +46,9 @@ class ManagementBroker : public ManagementAgent virtual ~ManagementBroker (); - static void enableManagement (std::string dataDir, uint16_t interval, Manageable* broker, int threadPoolSize); - static shared_ptr getAgent (void); - static void shutdown (void); + static void enableManagement (std::string dataDir, uint16_t interval, Manageable* broker, int threadPoolSize); + static ManagementAgent* getAgent (void); + static void shutdown (void); void setInterval (uint16_t _interval) { interval = _interval; } void setExchange (broker::Exchange::shared_ptr mgmtExchange, @@ -60,14 +58,19 @@ class ManagementBroker : public ManagementAgent std::string className, uint8_t* md5Sum, ManagementObject::writeSchemaCall_t schemaCall); - void addObject (ManagementObject::shared_ptr object, - uint32_t persistId = 0, - uint32_t persistBank = 4); + uint64_t addObject (ManagementObject* object, + uint32_t persistId = 0, + uint32_t persistBank = 4); void clientAdded (void); void dispatchCommand (broker::Deliverable& msg, const std::string& routingKey, const framing::FieldTable* args); - + + // Stubs for remote management agent calls + void init (std::string, uint16_t, uint16_t, bool) { assert(0); } + uint32_t pollCallbacks (uint32_t) { assert(0); return 0; } + int getSignalFd () { assert(0); return -1; } + private: friend class ManagementAgent; @@ -86,8 +89,8 @@ class ManagementBroker : public ManagementAgent struct RemoteAgent : public Manageable { uint32_t objIdBank; - Agent::shared_ptr mgmtObject; - ManagementObject::shared_ptr GetManagementObject (void) const { return mgmtObject; } + Agent* mgmtObject; + ManagementObject* GetManagementObject (void) const { return mgmtObject; } virtual ~RemoteAgent (); }; @@ -143,7 +146,7 @@ class ManagementBroker : public ManagementAgent ManagementObjectMap managementObjects; ManagementObjectMap newManagementObjects; - static shared_ptr agent; + static ManagementAgent* agent; static bool enabled; framing::Uuid uuid; diff --git a/cpp/src/qpid/management/ManagementObject.cpp b/cpp/src/qpid/management/ManagementObject.cpp index 2528ed4284..74d9571d10 100644 --- a/cpp/src/qpid/management/ManagementObject.cpp +++ b/cpp/src/qpid/management/ManagementObject.cpp @@ -21,7 +21,7 @@ #include "Manageable.h" #include "ManagementObject.h" -#include "ManagementAgent.h" +#include "qpid/agent/ManagementAgent.h" #include "qpid/framing/FieldTable.h" using namespace qpid::framing; diff --git a/cpp/src/qpid/management/ManagementObject.h b/cpp/src/qpid/management/ManagementObject.h index 732dd14a24..66adabf035 100644 --- a/cpp/src/qpid/management/ManagementObject.h +++ b/cpp/src/qpid/management/ManagementObject.h @@ -25,7 +25,6 @@ #include "qpid/sys/Time.h" #include "qpid/sys/Mutex.h" #include <qpid/framing/Buffer.h> -#include <boost/shared_ptr.hpp> #include <map> namespace qpid { @@ -82,7 +81,6 @@ class ManagementObject void writeTimestamps (qpid::framing::Buffer& buf); public: - typedef boost::shared_ptr<ManagementObject> shared_ptr; typedef void (*writeSchemaCall_t) (qpid::framing::Buffer&); ManagementObject (ManagementAgent* _agent, Manageable* _core) : @@ -121,7 +119,7 @@ class ManagementObject inline sys::Mutex& getLock() { return accessLock; } }; -typedef std::map<uint64_t,ManagementObject::shared_ptr> ManagementObjectMap; +typedef std::map<uint64_t,ManagementObject*> ManagementObjectMap; }} |
