summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/management
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-07-08 21:54:20 +0000
committerTed Ross <tross@apache.org>2008-07-08 21:54:20 +0000
commit391608a73f18a1797ab0c358f0a94364dc888eb2 (patch)
treec7f26ec2072884a2e94a767a3d4f29d76c4e81c7 /cpp/src/qpid/management
parent5515803c70dfeff04c190533e7f0187a0e732bf4 (diff)
downloadqpid-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.h5
-rw-r--r--cpp/src/qpid/management/ManagementAgent.h53
-rw-r--r--cpp/src/qpid/management/ManagementBroker.cpp49
-rw-r--r--cpp/src/qpid/management/ManagementBroker.h29
-rw-r--r--cpp/src/qpid/management/ManagementObject.cpp2
-rw-r--r--cpp/src/qpid/management/ManagementObject.h4
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;
}}