Author: aconway
Date: Mon Oct 15 21:35:38 2012
New Revision: 1398530

URL: http://svn.apache.org/viewvc?rev=1398530&view=rev
Log:
MQPID-4286: QMF queries for HA replication take too long to process (Jason 
Dillaman)

Rework ManagementAgent locks, get rid of shared buffers that were points of 
contention.

Minor log message improvements in ha code.

Modified:
    qpid/trunk/qpid/cpp/include/qpid/management/Manageable.h
    qpid/trunk/qpid/cpp/include/qpid/management/ManagementObject.h
    qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
    qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp
    qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp
    qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h
    qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
    qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h
    qpid/trunk/qpid/cpp/src/qpid/broker/SaslAuthenticator.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h
    qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h
    qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/System.h
    qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h
    qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp
    qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.h
    qpid/trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
    qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp
    qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
    qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.h
    qpid/trunk/qpid/cpp/src/tests/BrokerMgmtAgent.cpp
    qpid/trunk/qpid/cpp/src/tests/testagent.cpp

Modified: qpid/trunk/qpid/cpp/include/qpid/management/Manageable.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/management/Manageable.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/management/Manageable.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/management/Manageable.h Mon Oct 15 
21:35:38 2012
@@ -55,7 +55,7 @@ class QPID_COMMON_EXTERN Manageable
     //
     //  This accessor function returns a pointer to the management object.
     //
-    virtual ManagementObject* GetManagementObject(void) const = 0;
+    virtual ManagementObject::shared_ptr GetManagementObject(void) const = 0;
 
     //  Every "Manageable" object must implement ManagementMethod.  This
     //  function is called when a remote management client invokes a method

Modified: qpid/trunk/qpid/cpp/include/qpid/management/ManagementObject.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/management/ManagementObject.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/management/ManagementObject.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/management/ManagementObject.h Mon Oct 15 
21:35:38 2012
@@ -25,7 +25,7 @@
 
 #include "qpid/management/Mutex.h"
 #include "qpid/types/Variant.h"
-
+#include <boost/shared_ptr.hpp>
 #include <map>
 #include <vector>
 
@@ -155,6 +155,8 @@ protected:
     QPID_COMMON_EXTERN uint32_t writeTimestampsSize() const;
 
   public:
+    typedef boost::shared_ptr<ManagementObject> shared_ptr;
+
     QPID_COMMON_EXTERN static const uint8_t MD5_LEN = 16;
     QPID_COMMON_EXTERN static int maxThreads;
     //typedef void (*writeSchemaCall_t) (qpid::framing::Buffer&);
@@ -227,8 +229,8 @@ protected:
     //QPID_COMMON_EXTERN void mapDecode(const types::Variant::Map& map);
 };
 
-typedef std::map<ObjectId, ManagementObject*> ManagementObjectMap;
-typedef std::vector<ManagementObject*> ManagementObjectVector;
+typedef std::map<ObjectId, ManagementObject::shared_ptr> ManagementObjectMap;
+typedef std::vector<ManagementObject::shared_ptr> ManagementObjectVector;
 
 }}
 

Modified: qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h (original)
+++ qpid/trunk/qpid/cpp/managementgen/qmfgen/templates/Class.h Mon Oct 15 
21:35:38 2012
@@ -76,6 +76,8 @@ QPID_BROKER_CLASS_EXTERN class /*MGEN:Cl
     void aggregatePerThreadStats(struct PerThreadStats*) const;
 /*MGEN:ENDIF*/
   public:
+    typedef boost::shared_ptr</*MGEN:Class.NameCap*/> shared_ptr;
+
     QPID_BROKER_EXTERN static void writeSchema(std::string& schema);
     QPID_BROKER_EXTERN void mapEncodeValues(::qpid::types::Variant::Map& map,
                                           bool includeProperties=true,

Modified: qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/posix/QpiddBroker.cpp Mon Oct 15 21:35:38 2012
@@ -144,7 +144,7 @@ struct QpiddDaemon : public Daemon {
         uint16_t port=brokerPtr->getPort(options->daemon.transport);
         ready(port);            // Notify parent.
         if (options->parent->broker.enableMgmt && 
(options->parent->broker.port == 0 || options->daemon.transport != TCP)) {
-            
dynamic_cast<qmf::org::apache::qpid::broker::Broker*>(brokerPtr->GetManagementObject())->set_port(port);
+            
boost::dynamic_pointer_cast<qmf::org::apache::qpid::broker::Broker>(brokerPtr->GetManagementObject())->set_port(port);
         }
         brokerPtr->run();
     }
@@ -200,7 +200,7 @@ int QpiddBroker::execute (QpiddOptions *
             uint16_t port = brokerPtr->getPort(myOptions->daemon.transport);
             cout << port << endl;
             if (options->broker.enableMgmt) {
-                
dynamic_cast<qmf::org::apache::qpid::broker::Broker*>(brokerPtr->GetManagementObject())->set_port(port);
+                
boost::dynamic_pointer_cast<qmf::org::apache::qpid::broker::Broker>(brokerPtr->GetManagementObject())->set_port(port);
             }
         }
         brokerPtr->run();

Modified: qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/acl/Acl.cpp Mon Oct 15 21:35:38 2012
@@ -52,7 +52,7 @@ using qpid::management::Manageable;
 using qpid::management::Args;
 namespace _qmf = qmf::org::apache::qpid::acl;
 
-Acl::Acl (AclValues& av, Broker& b): aclValues(av), broker(&b), 
transferAcl(false), mgmtObject(0),
+Acl::Acl (AclValues& av, Broker& b): aclValues(av), broker(&b), 
transferAcl(false),
     connectionCounter(new ConnectionCounter(*this, 
aclValues.aclMaxConnectPerUser, aclValues.aclMaxConnectPerIp, 
aclValues.aclMaxConnectTotal)),
     resourceCounter(new ResourceCounter(*this, aclValues.aclMaxQueuesPerUser)){
 
@@ -60,7 +60,7 @@ Acl::Acl (AclValues& av, Broker& b): acl
 
     if (agent != 0){
         _qmf::Package  packageInit(agent);
-        mgmtObject = new _qmf::Acl (agent, this, broker);
+        mgmtObject = _qmf::Acl::shared_ptr(new _qmf::Acl (agent, this, 
broker));
         agent->addObject (mgmtObject);
         mgmtObject->set_maxConnections(aclValues.aclMaxConnectTotal);
         mgmtObject->set_maxConnectionsPerIp(aclValues.aclMaxConnectPerIp);
@@ -317,9 +317,9 @@ Acl::~Acl(){
     broker->getConnectionObservers().remove(connectionCounter);
 }
 
-ManagementObject* Acl::GetManagementObject(void) const
+ManagementObject::shared_ptr Acl::GetManagementObject(void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 Manageable::status_t Acl::ManagementMethod (uint32_t methodId, Args& args, 
string& text)

Modified: qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/acl/Acl.h Mon Oct 15 21:35:38 2012
@@ -62,7 +62,7 @@ private:
     broker::Broker*                      broker;
     bool                                 transferAcl;
     boost::shared_ptr<AclData>           data;
-    qmf::org::apache::qpid::acl::Acl*    mgmtObject; // mgnt owns lifecycle
+    qmf::org::apache::qpid::acl::Acl::shared_ptr mgmtObject;
     qpid::management::ManagementAgent*   agent;
     mutable qpid::sys::Mutex             dataLock;
     boost::shared_ptr<ConnectionCounter> connectionCounter;
@@ -113,7 +113,7 @@ private:
     bool readAclFile(std::string& aclFile, std::string& errorText);
     Manageable::status_t lookup       (management::Args& args, std::string& 
text);
     Manageable::status_t lookupPublish(management::Args& args, std::string& 
text);
-    virtual qpid::management::ManagementObject* GetManagementObject(void) 
const;
+    virtual qpid::management::ManagementObject::shared_ptr 
GetManagementObject(void) const;
     virtual management::Manageable::status_t ManagementMethod (uint32_t 
methodId, management::Args& args, std::string& text);
 
 };

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp Mon Oct 15 21:35:38 2012
@@ -60,7 +60,7 @@ void Bridge::PushHandler::handle(framing
 Bridge::Bridge(const std::string& _name, Link* _link, framing::ChannelId _id,
                CancellationListener l, const _qmf::ArgsLinkBridge& _args,
                InitializeCallback init, const std::string& _queueName, const 
string& ae) :
-    link(_link), channel(_id), args(_args), mgmtObject(0),
+    link(_link), channel(_id), args(_args),
     listener(l), name(_name),
     queueName(_queueName.empty() ? "qpid.bridge_queue_" + name + "_" + 
link->getBroker()->getFederationTag()
               : _queueName),
@@ -71,10 +71,10 @@ Bridge::Bridge(const std::string& _name,
 {
     ManagementAgent* agent = link->getBroker()->getManagementAgent();
     if (agent != 0) {
-        mgmtObject = new _qmf::Bridge
+        mgmtObject = _qmf::Bridge::shared_ptr(new _qmf::Bridge
             (agent, this, link, name, args.i_durable, args.i_src, args.i_dest,
              args.i_key, args.i_srcIsQueue, args.i_srcIsLocal,
-             args.i_tag, args.i_excludes, args.i_dynamic, args.i_sync);
+             args.i_tag, args.i_excludes, args.i_dynamic, args.i_sync));
         mgmtObject->set_channelId(channel);
         agent->addObject(mgmtObject);
     }
@@ -296,9 +296,9 @@ uint32_t Bridge::encodedSize() const
         + 2;              // sync
 }
 
-management::ManagementObject* Bridge::GetManagementObject (void) const
+management::ManagementObject::shared_ptr Bridge::GetManagementObject (void) 
const
 {
-    return (management::ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 management::Manageable::status_t Bridge::ManagementMethod(uint32_t methodId,

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h Mon Oct 15 21:35:38 2012
@@ -72,7 +72,7 @@ class Bridge : public PersistableConfig,
 
     bool isDetached() const { return detached; }
 
-    management::ManagementObject* GetManagementObject() const;
+    management::ManagementObject::shared_ptr GetManagementObject() const;
     management::Manageable::status_t ManagementMethod(uint32_t methodId,
                                                       management::Args& args,
                                                       std::string& text);
@@ -128,7 +128,7 @@ class Bridge : public PersistableConfig,
     Link* const link;
     const framing::ChannelId          channel;
     qmf::org::apache::qpid::broker::ArgsLinkBridge args;
-    qmf::org::apache::qpid::broker::Bridge*        mgmtObject;
+    qmf::org::apache::qpid::broker::Bridge::shared_ptr mgmtObject;
     CancellationListener        listener;
     std::string name;
     std::string queueName;

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp Mon Oct 15 21:35:38 2012
@@ -214,7 +214,6 @@ Broker::Broker(const Broker::Options& co
             conf.replayFlushLimit*1024, // convert kb to bytes.
             conf.replayHardLimit*1024),
         *this),
-    mgmtObject(0),
     queueCleaner(queues, &timer),
     recoveryInProgress(false),
     recovery(true),
@@ -235,7 +234,7 @@ Broker::Broker(const Broker::Options& co
         System* system = new System (dataDir.isEnabled() ? dataDir.getPath() : 
string(), this);
         systemObject = System::shared_ptr(system);
 
-        mgmtObject = new _qmf::Broker(managementAgent.get(), this, system, 
"amqp-broker");
+        mgmtObject = _qmf::Broker::shared_ptr(new 
_qmf::Broker(managementAgent.get(), this, system, "amqp-broker"));
         
mgmtObject->set_systemRef(system->GetManagementObject()->getObjectId());
         mgmtObject->set_port(conf.port);
         mgmtObject->set_workerThreads(conf.workerThreads);
@@ -450,9 +449,9 @@ Broker::~Broker() {
     QPID_LOG(notice, "Shut down");
 }
 
-ManagementObject* Broker::GetManagementObject(void) const
+ManagementObject::shared_ptr Broker::GetManagementObject(void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 Manageable* Broker::GetVhostObject(void) const

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h Mon Oct 15 21:35:38 2012
@@ -171,7 +171,7 @@ class Broker : public sys::Runnable, pub
     boost::shared_ptr<sys::ConnectionCodec::Factory> factory;
     DtxManager dtxManager;
     SessionManager sessionManager;
-    qmf::org::apache::qpid::broker::Broker* mgmtObject;
+    qmf::org::apache::qpid::broker::Broker::shared_ptr mgmtObject;
     Vhost::shared_ptr            vhostObject;
     System::shared_ptr           systemObject;
     QueueCleaner queueCleaner;
@@ -230,7 +230,7 @@ class Broker : public sys::Runnable, pub
     SessionManager& getSessionManager() { return sessionManager; }
     const std::string& getFederationTag() const { return federationTag; }
 
-    QPID_BROKER_EXTERN management::ManagementObject* GetManagementObject() 
const;
+    QPID_BROKER_EXTERN management::ManagementObject::shared_ptr 
GetManagementObject() const;
     QPID_BROKER_EXTERN management::Manageable* GetVhostObject() const;
     QPID_BROKER_EXTERN management::Manageable::status_t ManagementMethod(
         uint32_t methodId, management::Args& args, std::string& text);

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp Mon Oct 15 21:35:38 2012
@@ -97,7 +97,6 @@ Connection::Connection(ConnectionOutputH
     link(link_),
     mgmtClosing(false),
     mgmtId(mgmtId_),
-    mgmtObject(0),
     links(broker_.getLinks()),
     agent(0),
     timer(broker_.getTimer()),
@@ -119,7 +118,7 @@ void Connection::addManagementObject() {
         agent = broker.getManagementAgent();
         if (agent != 0) {
             // TODO set last bool true if system connection
-            mgmtObject = new _qmf::Connection(agent, this, parent, mgmtId, 
!link, false);
+            mgmtObject = _qmf::Connection::shared_ptr(new 
_qmf::Connection(agent, this, parent, mgmtId, !link, false));
             mgmtObject->set_shadow(shadow);
             agent->addObject(mgmtObject, objectId);
         }
@@ -403,9 +402,9 @@ SessionHandler& Connection::getChannel(C
     return *ptr_map_ptr(i);
 }
 
-ManagementObject* Connection::GetManagementObject(void) const
+ManagementObject::shared_ptr Connection::GetManagementObject(void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 Manageable::status_t Connection::ManagementMethod(uint32_t methodId, Args&, 
string&)

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h Mon Oct 15 21:35:38 2012
@@ -112,7 +112,7 @@ class Connection : public sys::Connectio
     void closeChannel(framing::ChannelId channel);
 
     // Manageable entry points
-    management::ManagementObject* GetManagementObject (void) const;
+    management::ManagementObject::shared_ptr GetManagementObject (void) const;
     management::Manageable::status_t
         ManagementMethod (uint32_t methodId, management::Args& args, 
std::string&);
 
@@ -196,7 +196,7 @@ class Connection : public sys::Connectio
     const std::string mgmtId;
     sys::Mutex ioCallbackLock;
     std::queue<boost::function0<void> > ioCallbacks;
-    qmf::org::apache::qpid::broker::Connection* mgmtObject;
+    qmf::org::apache::qpid::broker::Connection::shared_ptr mgmtObject;
     LinkRegistry& links;
     management::ManagementAgent* agent;
     sys::Timer& timer;
@@ -231,7 +231,7 @@ class Connection : public sys::Connectio
 
   public:
 
-    qmf::org::apache::qpid::broker::Connection* getMgmtObject() { return 
mgmtObject; }
+    qmf::org::apache::qpid::broker::Connection::shared_ptr getMgmtObject() { 
return mgmtObject; }
 };
 
 }}

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp Mon Oct 15 
21:35:38 2012
@@ -150,7 +150,7 @@ void ConnectionHandler::Handler::startOk
 void ConnectionHandler::Handler::startOk(const ConnectionStartOkBody& body)
 {
     const framing::FieldTable& clientProperties = body.getClientProperties();
-    qmf::org::apache::qpid::broker::Connection* mgmtObject = 
connection.getMgmtObject();
+    qmf::org::apache::qpid::broker::Connection::shared_ptr mgmtObject = 
connection.getMgmtObject();
 
     if (mgmtObject != 0) {
         string procName = clientProperties.getAsString(CLIENT_PROCESS_NAME);

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp Mon Oct 15 21:35:38 2012
@@ -165,19 +165,19 @@ void Exchange::routeIVE(){
 
 Exchange::Exchange (const string& _name, Manageable* parent, Broker* b) :
     name(_name), durable(false), alternateUsers(0), persistenceId(0), 
sequence(false),
-    sequenceNo(0), ive(false), mgmtExchange(0), brokerMgmtObject(0), 
broker(b), destroyed(false)
+    sequenceNo(0), ive(false), broker(b), destroyed(false)
 {
     if (parent != 0 && broker != 0)
     {
         ManagementAgent* agent = broker->getManagementAgent();
         if (agent != 0)
         {
-            mgmtExchange = new _qmf::Exchange (agent, this, parent, _name);
+            mgmtExchange = _qmf::Exchange::shared_ptr(new _qmf::Exchange 
(agent, this, parent, _name));
             mgmtExchange->set_durable(durable);
             mgmtExchange->set_autoDelete(false);
             agent->addObject(mgmtExchange, 0, durable);
             if (broker)
-                brokerMgmtObject = (qmf::org::apache::qpid::broker::Broker*) 
broker->GetManagementObject();
+                brokerMgmtObject = 
boost::dynamic_pointer_cast<qmf::org::apache::qpid::broker::Broker>(broker->GetManagementObject());
         }
     }
 }
@@ -185,20 +185,20 @@ Exchange::Exchange (const string& _name,
 Exchange::Exchange(const string& _name, bool _durable, const 
qpid::framing::FieldTable& _args,
                    Manageable* parent, Broker* b)
     : name(_name), durable(_durable), alternateUsers(0), persistenceId(0),
-      args(_args), sequence(false), sequenceNo(0), ive(false), 
mgmtExchange(0), brokerMgmtObject(0), broker(b), destroyed(false)
+      args(_args), sequence(false), sequenceNo(0), ive(false), broker(b), 
destroyed(false)
 {
     if (parent != 0 && broker != 0)
     {
         ManagementAgent* agent = broker->getManagementAgent();
         if (agent != 0)
         {
-            mgmtExchange = new _qmf::Exchange (agent, this, parent, _name);
+            mgmtExchange = _qmf::Exchange::shared_ptr(new _qmf::Exchange 
(agent, this, parent, _name));
             mgmtExchange->set_durable(durable);
             mgmtExchange->set_autoDelete(false);
             mgmtExchange->set_arguments(ManagementAgent::toMap(args));
             agent->addObject(mgmtExchange, 0, durable);
             if (broker)
-                brokerMgmtObject = (qmf::org::apache::qpid::broker::Broker*) 
broker->GetManagementObject();
+                brokerMgmtObject = 
boost::dynamic_pointer_cast<qmf::org::apache::qpid::broker::Broker>(broker->GetManagementObject());
         }
     }
 
@@ -294,9 +294,9 @@ void Exchange::recoveryComplete(Exchange
     }
 }
 
-ManagementObject* Exchange::GetManagementObject (void) const
+ManagementObject::shared_ptr Exchange::GetManagementObject (void) const
 {
-    return (ManagementObject*) mgmtExchange;
+    return mgmtExchange;
 }
 
 void Exchange::registerDynamicBridge(DynamicBridge* db)
@@ -345,16 +345,16 @@ void Exchange::propagateFedOp(const stri
 
 Exchange::Binding::Binding(const string& _key, Queue::shared_ptr _queue, 
Exchange* _parent,
                            FieldTable _args, const string& _origin)
-    : parent(_parent), queue(_queue), key(_key), args(_args), origin(_origin), 
mgmtBinding(0)
+    : parent(_parent), queue(_queue), key(_key), args(_args), origin(_origin)
 {
 }
 
 Exchange::Binding::~Binding ()
 {
     if (mgmtBinding != 0) {
-        ManagementObject* mo = queue->GetManagementObject();
+        _qmf::Queue::shared_ptr mo = 
boost::dynamic_pointer_cast<_qmf::Queue>(queue->GetManagementObject());
         if (mo != 0)
-            static_cast<_qmf::Queue*>(mo)->dec_bindingCount();
+            mo->dec_bindingCount();
         mgmtBinding->resourceDestroy ();
     }
 }
@@ -367,25 +367,25 @@ void Exchange::Binding::startManagement(
         if (broker != 0) {
             ManagementAgent* agent = broker->getManagementAgent();
             if (agent != 0) {
-                ManagementObject* mo = queue->GetManagementObject();
+                _qmf::Queue::shared_ptr mo = 
boost::dynamic_pointer_cast<_qmf::Queue>(queue->GetManagementObject());
                 if (mo != 0) {
                     management::ObjectId queueId = mo->getObjectId();
 
-                    mgmtBinding = new _qmf::Binding
-                        (agent, this, (Manageable*) parent, queueId, key, 
ManagementAgent::toMap(args));
+                    mgmtBinding = _qmf::Binding::shared_ptr(new _qmf::Binding
+                        (agent, this, (Manageable*) parent, queueId, key, 
ManagementAgent::toMap(args)));
                     if (!origin.empty())
                         mgmtBinding->set_origin(origin);
                     agent->addObject(mgmtBinding);
-                    static_cast<_qmf::Queue*>(mo)->inc_bindingCount();
+                    mo->inc_bindingCount();
                 }
             }
         }
     }
 }
 
-ManagementObject* Exchange::Binding::GetManagementObject () const
+ManagementObject::shared_ptr Exchange::Binding::GetManagementObject () const
 {
-    return (ManagementObject*) mgmtBinding;
+    return mgmtBinding;
 }
 
 Exchange::MatchQueue::MatchQueue(Queue::shared_ptr q) : queue(q) {}

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h Mon Oct 15 21:35:38 2012
@@ -52,13 +52,13 @@ public:
         const std::string         key;
         const framing::FieldTable args;
         std::string               origin;
-        qmf::org::apache::qpid::broker::Binding* mgmtBinding;
+        qmf::org::apache::qpid::broker::Binding::shared_ptr mgmtBinding;
 
         Binding(const std::string& key, boost::shared_ptr<Queue> queue, 
Exchange* parent = 0,
                 framing::FieldTable args = framing::FieldTable(), const 
std::string& origin = std::string());
         ~Binding();
         void startManagement();
-        management::ManagementObject* GetManagementObject() const;
+        management::ManagementObject::shared_ptr GetManagementObject() const;
     };
 
 private:
@@ -159,8 +159,8 @@ protected:
         }
     };
 
-    qmf::org::apache::qpid::broker::Exchange* mgmtExchange;
-    qmf::org::apache::qpid::broker::Broker* brokerMgmtObject;
+    qmf::org::apache::qpid::broker::Exchange::shared_ptr mgmtExchange;
+    qmf::org::apache::qpid::broker::Broker::shared_ptr brokerMgmtObject;
 
 public:
     typedef boost::shared_ptr<Exchange> shared_ptr;
@@ -210,7 +210,7 @@ public:
     static QPID_BROKER_EXTERN Exchange::shared_ptr decode(ExchangeRegistry& 
exchanges, framing::Buffer& buffer);
 
     // Manageable entry points
-    QPID_BROKER_EXTERN management::ManagementObject* GetManagementObject(void) 
const;
+    QPID_BROKER_EXTERN management::ManagementObject::shared_ptr 
GetManagementObject(void) const;
 
     // Federation hooks
     class DynamicBridge {

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp Mon Oct 15 21:35:38 2012
@@ -143,7 +143,7 @@ Link::Link(const string&  _name,
       host(_host), port(_port), transport(_transport),
       durable(_durable),
       authMechanism(_authMechanism), username(_username), password(_password),
-      persistenceId(0), mgmtObject(0), broker(_broker), state(0),
+      persistenceId(0), broker(_broker), state(0),
       visitCount(0),
       currentInterval(1),
       closing(false),
@@ -161,7 +161,7 @@ Link::Link(const string&  _name,
         agent = broker->getManagementAgent();
         if (agent != 0)
         {
-            mgmtObject = new _qmf::Link(agent, this, parent, name, durable);
+            mgmtObject = _qmf::Link::shared_ptr(new _qmf::Link(agent, this, 
parent, name, durable));
             mgmtObject->set_host(host);
             mgmtObject->set_port(port);
             mgmtObject->set_transport(transport);
@@ -638,9 +638,9 @@ uint32_t Link::encodedSize() const
         + password.size() + 1;
 }
 
-ManagementObject* Link::GetManagementObject (void) const
+ManagementObject::shared_ptr Link::GetManagementObject (void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 void Link::close() {

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Link.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Link.h Mon Oct 15 21:35:38 2012
@@ -69,7 +69,7 @@ class Link : public PersistableConfig, p
     std::string        username;
     std::string        password;
     mutable uint64_t    persistenceId;
-    qmf::org::apache::qpid::broker::Link* mgmtObject;
+    qmf::org::apache::qpid::broker::Link::shared_ptr mgmtObject;
     Broker* broker;
     int     state;
     uint32_t visitCount;
@@ -181,7 +181,7 @@ class Link : public PersistableConfig, p
     static bool isEncodedLink(const std::string& key);
 
     // Manageable entry points
-    management::ManagementObject*    GetManagementObject(void) const;
+    management::ManagementObject::shared_ptr GetManagementObject(void) const;
     management::Manageable::status_t ManagementMethod(uint32_t, 
management::Args&, std::string&);
 
     // manage the exchange owned by this link

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Mon Oct 15 21:35:38 2012
@@ -77,8 +77,8 @@ namespace
 {
 
 inline void mgntEnqStats(const Message& msg,
-                        _qmf::Queue* mgmtObject,
-                        _qmf::Broker* brokerMgmtObject)
+                        _qmf::Queue::shared_ptr mgmtObject,
+                        _qmf::Broker::shared_ptr brokerMgmtObject)
 {
     if (mgmtObject != 0) {
         _qmf::Queue::PerThreadStats *qStats = mgmtObject->getStatistics();
@@ -101,8 +101,8 @@ inline void mgntEnqStats(const Message& 
 }
 
 inline void mgntDeqStats(const Message& msg,
-                        _qmf::Queue* mgmtObject,
-                        _qmf::Broker* brokerMgmtObject)
+                        _qmf::Queue::shared_ptr mgmtObject,
+                        _qmf::Broker::shared_ptr brokerMgmtObject)
 {
     if (mgmtObject != 0){
         _qmf::Queue::PerThreadStats *qStats = mgmtObject->getStatistics();
@@ -179,8 +179,6 @@ Queue::Queue(const string& _name, const 
     messages(new MessageDeque()),
     persistenceId(0),
     settings(b ? merge(_settings, b->getOptions()) : _settings),
-    mgmtObject(0),
-    brokerMgmtObject(0),
     eventMode(0),
     broker(b),
     deleted(false),
@@ -195,17 +193,17 @@ Queue::Queue(const string& _name, const 
     qpid::amqp_0_10::translate(settings.asMap(), encodableSettings);
     if (parent != 0 && broker != 0) {
         ManagementAgent* agent = broker->getManagementAgent();
-
         if (agent != 0) {
-            mgmtObject = new _qmf::Queue(agent, this, parent, _name, _store != 
0, settings.autodelete);
+            mgmtObject = _qmf::Queue::shared_ptr(
+                new _qmf::Queue(agent, this, parent, _name, _store != 0, 
settings.autodelete));
             mgmtObject->set_arguments(settings.asMap());
             agent->addObject(mgmtObject, 0, store != 0);
-            brokerMgmtObject = (qmf::org::apache::qpid::broker::Broker*) 
broker->GetManagementObject();
+            brokerMgmtObject = 
boost::dynamic_pointer_cast<_qmf::Broker>(broker->GetManagementObject());
             if (brokerMgmtObject)
                 brokerMgmtObject->inc_queueCount();
         }
     }
-    
+
     if ( settings.isBrowseOnly ) {
         QPID_LOG ( info, "Queue " << name << " is browse-only." );
     }
@@ -213,11 +211,6 @@ Queue::Queue(const string& _name, const 
 
 Queue::~Queue()
 {
-    if (mgmtObject != 0) {
-        mgmtObject->resourceDestroy();
-        if (brokerMgmtObject)
-            brokerMgmtObject->dec_queueCount();
-    }
 }
 
 bool isLocalTo(const OwnershipToken* token, const Message& msg)
@@ -1076,6 +1069,12 @@ void Queue::destroyed()
                  boost::bind(&QueueObserver::destroy, _1));
         observers.clear();
     }
+
+    if (mgmtObject != 0) {
+        mgmtObject->resourceDestroy();
+        if (brokerMgmtObject)
+            brokerMgmtObject->dec_queueCount();
+    }
 }
 
 void Queue::notifyDeleted()
@@ -1109,7 +1108,7 @@ void Queue::setPersistenceId(uint64_t _p
 {
     if (mgmtObject != 0 && persistenceId == 0 && externalQueueStore)
     {
-        ManagementObject* childObj = externalQueueStore->GetManagementObject();
+        ManagementObject::shared_ptr childObj = 
externalQueueStore->GetManagementObject();
         if (childObj != 0)
             childObj->setReference(mgmtObject->getObjectId());
     }
@@ -1263,7 +1262,7 @@ void Queue::setExternalQueueStore(Extern
     externalQueueStore = inst;
 
     if (inst) {
-        ManagementObject* childObj = inst->GetManagementObject();
+        ManagementObject::shared_ptr childObj = inst->GetManagementObject();
         if (childObj != 0 && mgmtObject != 0)
             childObj->setReference(mgmtObject->getObjectId());
     }
@@ -1311,9 +1310,9 @@ void Queue::countLoadedFromDisk(uint64_t
 }
 
 
-ManagementObject* Queue::GetManagementObject (void) const
+ManagementObject::shared_ptr Queue::GetManagementObject (void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 Manageable::status_t Queue::ManagementMethod (uint32_t methodId, Args& args, 
string& etext)

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h Mon Oct 15 21:35:38 2012
@@ -151,8 +151,8 @@ class Queue : public boost::enable_share
     std::string alternateExchangeName;
     boost::shared_ptr<Exchange> alternateExchange;
     framing::SequenceNumber sequence;
-    qmf::org::apache::qpid::broker::Queue* mgmtObject;
-    qmf::org::apache::qpid::broker::Broker* brokerMgmtObject;
+    qmf::org::apache::qpid::broker::Queue::shared_ptr mgmtObject;
+    qmf::org::apache::qpid::broker::Broker::shared_ptr brokerMgmtObject;
     sys::AtomicValue<uint32_t> dequeueSincePurge; // Count dequeues since last 
purge.
     int eventMode;
     Observers observers;
@@ -339,7 +339,7 @@ class Queue : public boost::enable_share
     QPID_BROKER_EXTERN void countLoadedFromDisk(uint64_t size) const;
 
     // Manageable entry points
-    QPID_BROKER_EXTERN management::ManagementObject* GetManagementObject 
(void) const;
+    QPID_BROKER_EXTERN management::ManagementObject::shared_ptr 
GetManagementObject (void) const;
     management::Manageable::status_t
     QPID_BROKER_EXTERN ManagementMethod (uint32_t methodId, management::Args& 
args, std::string& text);
     QPID_BROKER_EXTERN void query(::qpid::types::Variant::Map&) const;

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp Mon Oct 15 21:35:38 
2012
@@ -68,7 +68,7 @@ QueueFlowLimit::QueueFlowLimit(Queue *_q
     : StatefulQueueObserver(std::string("QueueFlowLimit")), queue(_queue), 
queueName("<unknown>"),
       flowStopCount(_flowStopCount), flowResumeCount(_flowResumeCount),
       flowStopSize(_flowStopSize), flowResumeSize(_flowResumeSize),
-      flowStopped(false), count(0), size(0), queueMgmtObj(0), broker(0)
+      flowStopped(false), count(0), size(0), broker(0)
 {
     uint32_t maxCount(0);
     uint64_t maxSize(0);
@@ -78,7 +78,7 @@ QueueFlowLimit::QueueFlowLimit(Queue *_q
         if (queue->getSettings().maxDepth.hasCount()) maxCount = 
queue->getSettings().maxDepth.getCount();
         if (queue->getSettings().maxDepth.hasCount()) maxSize = 
queue->getSettings().maxDepth.getSize();
         broker = queue->getBroker();
-        queueMgmtObj = dynamic_cast<_qmfBroker::Queue*> 
(queue->GetManagementObject());
+        queueMgmtObj = boost::dynamic_pointer_cast<_qmfBroker::Queue> 
(queue->GetManagementObject());
         if (queueMgmtObj) {
             queueMgmtObj->set_flowStopped(isFlowControlActive());
         }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h Mon Oct 15 21:35:38 
2012
@@ -31,14 +31,8 @@
 #include "qpid/framing/SequenceNumber.h"
 #include "qpid/sys/AtomicValue.h"
 #include "qpid/sys/Mutex.h"
+#include "qmf/org/apache/qpid/broker/Queue.h"
 
-namespace qmf {
-namespace org {
-namespace apache {
-namespace qpid {
-namespace broker {
-    class Queue;
-}}}}}
 namespace _qmfBroker = qmf::org::apache::qpid::broker;
 
 namespace qpid {
@@ -118,7 +112,7 @@ struct QueueSettings;
     std::map<framing::SequenceNumber, Message > index;
     mutable qpid::sys::Mutex indexLock;
 
-    _qmfBroker::Queue *queueMgmtObj;
+    _qmfBroker::Queue::shared_ptr queueMgmtObj;
 
     const Broker *broker;
 

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SaslAuthenticator.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SaslAuthenticator.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SaslAuthenticator.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SaslAuthenticator.cpp Mon Oct 15 
21:35:38 2012
@@ -424,7 +424,7 @@ void CyrusAuthenticator::start(const str
                                  &challenge, &challenge_len);
 
     processAuthenticationStep(code, challenge, challenge_len);
-    qmf::org::apache::qpid::broker::Connection* cnxMgmt = 
connection.getMgmtObject();
+    qmf::org::apache::qpid::broker::Connection::shared_ptr cnxMgmt = 
connection.getMgmtObject();
     if ( cnxMgmt )
         cnxMgmt->set_saslMechanism(mechanism);
 }
@@ -507,7 +507,7 @@ std::auto_ptr<SecurityLayer> CyrusAuthen
     if (ssf) {
         securityLayer = std::auto_ptr<SecurityLayer>(new 
CyrusSecurityLayer(sasl_conn, maxFrameSize));
     }
-    qmf::org::apache::qpid::broker::Connection* cnxMgmt = 
connection.getMgmtObject();
+    qmf::org::apache::qpid::broker::Connection::shared_ptr cnxMgmt = 
connection.getMgmtObject();
     if ( cnxMgmt )
         cnxMgmt->set_saslSsf(ssf);
     return securityLayer;

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp Mon Oct 15 21:35:38 
2012
@@ -300,8 +300,7 @@ Consumer(_name, type),
     arguments(_arguments),
     notifyEnabled(true),
     syncFrequency(_arguments.getAsInt(QPID_SYNC_FREQUENCY)),
-    deliveryCount(0),
-    mgmtObject(0)
+    deliveryCount(0)
 {
     if (parent != 0 && queue.get() != 0 && queue->GetManagementObject() !=0)
     {
@@ -310,17 +309,17 @@ Consumer(_name, type),
 
         if (agent != 0)
         {
-            mgmtObject = new _qmf::Subscription(agent, this, ms , 
queue->GetManagementObject()->getObjectId(), getTag(),
-                                                !acquire, ackExpected, 
exclusive, ManagementAgent::toMap(arguments));
+            mgmtObject = _qmf::Subscription::shared_ptr(new 
_qmf::Subscription(agent, this, ms , 
queue->GetManagementObject()->getObjectId(), getTag(),
+                                                                               
!acquire, ackExpected, exclusive, ManagementAgent::toMap(arguments)));
             agent->addObject (mgmtObject);
             mgmtObject->set_creditMode("WINDOW");
         }
     }
 }
 
-ManagementObject* SemanticState::ConsumerImpl::GetManagementObject (void) const
+ManagementObject::shared_ptr SemanticState::ConsumerImpl::GetManagementObject 
(void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 Manageable::status_t SemanticState::ConsumerImpl::ManagementMethod (uint32_t 
methodId, Args&, string&)

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SemanticState.h Mon Oct 15 21:35:38 2012
@@ -96,7 +96,7 @@ class SemanticState : private boost::non
         bool notifyEnabled;
         const int syncFrequency;
         int deliveryCount;
-        qmf::org::apache::qpid::broker::Subscription* mgmtObject;
+        qmf::org::apache::qpid::broker::Subscription::shared_ptr mgmtObject;
 
         bool checkCredit(const Message& msg);
         void allocateCredit(const Message& msg);
@@ -160,7 +160,7 @@ class SemanticState : private boost::non
         void acknowledged(const DeliveryRecord&) {}
 
         // manageable entry points
-        QPID_BROKER_EXTERN management::ManagementObject*
+        QPID_BROKER_EXTERN management::ManagementObject::shared_ptr
         GetManagementObject(void) const;
 
         QPID_BROKER_EXTERN management::Manageable::status_t

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp Mon Oct 15 21:35:38 
2012
@@ -58,7 +58,6 @@ SessionState::SessionState(
       broker(b), handler(&h),
       semanticState(*this),
       adapter(semanticState),
-      mgmtObject(0),
       asyncCommandCompleter(new AsyncCommandCompleter(this))
 {
     if (!delayManagement) addManagementObject();
@@ -71,8 +70,8 @@ void SessionState::addManagementObject()
     if (parent != 0) {
         ManagementAgent* agent = getBroker().getManagementAgent();
         if (agent != 0) {
-            mgmtObject = new _qmf::Session
-                (agent, this, parent, getId().getName());
+            mgmtObject = _qmf::Session::shared_ptr(new _qmf::Session
+                (agent, this, parent, getId().getName()));
             mgmtObject->set_attached (0);
             mgmtObject->set_detachedLifespan (0);
             mgmtObject->clr_expireTime();
@@ -149,9 +148,9 @@ void SessionState::giveReadCredit(int32_
         getConnection().outputTasks.giveReadCredit(credit);
 }
 
-ManagementObject* SessionState::GetManagementObject (void) const
+ManagementObject::shared_ptr SessionState::GetManagementObject (void) const
 {
-    return (ManagementObject*) mgmtObject;
+    return mgmtObject;
 }
 
 Manageable::status_t SessionState::ManagementMethod (uint32_t methodId,

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h Mon Oct 15 21:35:38 2012
@@ -110,7 +110,7 @@ class SessionState : public qpid::Sessio
                        const qpid::types::Variant::Map& annotations, bool 
sync);
 
     // Manageable entry points
-    management::ManagementObject* GetManagementObject (void) const;
+    management::ManagementObject::shared_ptr GetManagementObject (void) const;
     management::Manageable::status_t
     ManagementMethod (uint32_t methodId, management::Args& args, std::string&);
 
@@ -168,7 +168,7 @@ class SessionState : public qpid::Sessio
     SemanticState semanticState;
     SessionAdapter adapter;
     MessageBuilder msgBuilder;
-    qmf::org::apache::qpid::broker::Session* mgmtObject;
+    qmf::org::apache::qpid::broker::Session::shared_ptr mgmtObject;
     qpid::framing::SequenceSet accepted;
 
     // sequence numbers for pending received Execution.Sync commands

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/System.cpp Mon Oct 15 21:35:38 2012
@@ -31,7 +31,7 @@ using namespace qpid::broker;
 using namespace std;
 namespace _qmf = qmf::org::apache::qpid::broker;
 
-System::System (string _dataDir, Broker* broker) : mgmtObject(0)
+System::System (string _dataDir, Broker* broker)
 {
     ManagementAgent* agent = broker ? broker->getManagementAgent() : 0;
 
@@ -64,7 +64,7 @@ System::System (string _dataDir, Broker*
             }
         }
 
-        mgmtObject = new _qmf::System(agent, this, 
types::Uuid(systemId.c_array()));
+        mgmtObject = _qmf::System::shared_ptr(new _qmf::System(agent, this, 
types::Uuid(systemId.c_array())));
         qpid::sys::SystemInfo::getSystemId (osName,
                                             nodeName,
                                             release,

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/System.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/System.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/System.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/System.h Mon Oct 15 21:35:38 2012
@@ -35,7 +35,7 @@ class System : public management::Manage
 {
   private:
 
-    qmf::org::apache::qpid::broker::System* mgmtObject;
+    qmf::org::apache::qpid::broker::System::shared_ptr mgmtObject;
     framing::Uuid systemId;
     std::string osName, nodeName, release, version, machine;
 
@@ -45,7 +45,7 @@ class System : public management::Manage
 
     System (std::string _dataDir, Broker* broker = 0);
 
-    management::ManagementObject* GetManagementObject (void) const
+    management::ManagementObject::shared_ptr GetManagementObject (void) const
     { return mgmtObject; }
 
 

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.cpp Mon Oct 15 21:35:38 2012
@@ -29,7 +29,7 @@ namespace qpid { namespace management {
 class Manageable;
 }}
 
-Vhost::Vhost (qpid::management::Manageable* parentBroker, Broker* broker) : 
mgmtObject(0)
+Vhost::Vhost (qpid::management::Manageable* parentBroker, Broker* broker)
 {
     if (parentBroker != 0 && broker != 0)
     {
@@ -37,7 +37,7 @@ Vhost::Vhost (qpid::management::Manageab
 
         if (agent != 0)
         {
-            mgmtObject = new _qmf::Vhost(agent, this, parentBroker, "/");
+            mgmtObject = _qmf::Vhost::shared_ptr(new _qmf::Vhost(agent, this, 
parentBroker, "/"));
             agent->addObject(mgmtObject, 0, true);
         }
     }

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h Mon Oct 15 21:35:38 2012
@@ -32,7 +32,7 @@ class Vhost : public management::Managea
 {
   private:
 
-    qmf::org::apache::qpid::broker::Vhost* mgmtObject;
+    qmf::org::apache::qpid::broker::Vhost::shared_ptr mgmtObject;
 
   public:
 
@@ -40,7 +40,7 @@ class Vhost : public management::Managea
 
     Vhost (management::Manageable* parentBroker, Broker* broker = 0);
 
-    management::ManagementObject* GetManagementObject (void) const
+    management::ManagementObject::shared_ptr GetManagementObject (void) const
     { return mgmtObject; }
     void setFederationTag(const std::string& tag);
 };

Modified: qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp Mon Oct 15 21:35:38 2012
@@ -64,7 +64,6 @@ HaBroker::HaBroker(broker::Broker& b, co
       systemId(broker.getSystem()->getSystemId().data()),
       settings(s),
       observer(new ConnectionObserver(*this, systemId)),
-      mgmtObject(0),
       status(STANDALONE),
       membership(systemId),
       replicationTest(s.replicateDefault.get())
@@ -95,7 +94,7 @@ void HaBroker::initialize() {
     if (settings.cluster && !ma)
         throw Exception("Cannot start HA: management is disabled");
     _qmf::Package  packageInit(ma);
-    mgmtObject = new _qmf::HaBroker(ma, this, "ha-broker");
+    mgmtObject = _qmf::HaBroker::shared_ptr(new _qmf::HaBroker(ma, this, 
"ha-broker"));
     mgmtObject->set_replicateDefault(settings.replicateDefault.str());
     mgmtObject->set_systemId(systemId);
     ma->addObject(mgmtObject);

Modified: qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.h?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/HaBroker.h Mon Oct 15 21:35:38 2012
@@ -71,7 +71,7 @@ class HaBroker : public management::Mana
     void initialize();
 
     // Implement Manageable.
-    qpid::management::ManagementObject* GetManagementObject() const { return 
mgmtObject; }
+    qpid::management::ManagementObject::shared_ptr GetManagementObject() const 
{ return mgmtObject; }
     management::Manageable::status_t ManagementMethod (
         uint32_t methodId, management::Args& args, std::string& text);
 
@@ -124,7 +124,7 @@ class HaBroker : public management::Mana
     boost::shared_ptr<ConnectionObserver> observer; // Used by Backup and 
Primary
     boost::shared_ptr<Backup> backup;
     boost::shared_ptr<Primary> primary;
-    qmf::org::apache::qpid::ha::HaBroker* mgmtObject;
+    qmf::org::apache::qpid::ha::HaBroker::shared_ptr mgmtObject;
     Url clientUrl, brokerUrl;
     std::vector<Url> knownBrokers;
     BrokerStatus status;

Modified: qpid/trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp Mon Oct 15 21:35:38 2012
@@ -91,9 +91,8 @@ std::ostream& operator<<(std::ostream& o
 
 void RemoteBackup::ready(const QueuePtr& q) {
     catchupQueues.erase(q);
-    QPID_LOG(debug, logPrefix << "Queue ready: " << q->getName()
-             <<  QueueSetPrinter(", waiting for: ", catchupQueues));
-    if (isReady()) QPID_LOG(debug, logPrefix << "All queues ready");
+    QPID_LOG(debug, logPrefix << "Caught up on queue: " << q->getName() << ", "
+             << catchupQueues.size() << " remain to catch up");
 }
 
 // Called via ConfigurationObserver::queueCreate and from catchupQueue

Modified: qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp?rev=1398530&r1=1398529&r2=1398530&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp Mon Oct 15 21:35:38 2012
@@ -87,8 +87,8 @@ void StatusCheckThread::run() {
             string status = details["status"].getString();
             if (status != "joining") {
                 statusCheck.setPromote(false);
-                QPID_LOG(error, statusCheck.logPrefix << "Broker " << url << " 
status is " << status
-                         << " this broker will refuse promotion.");
+                QPID_LOG(info, statusCheck.logPrefix << "Status of " << url << 
" is "
+                         << status << ", this broker will refuse promotion.");
             }
             QPID_LOG(debug, statusCheck.logPrefix << "Status of " << url << ": 
" << status);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to