Author: kpvdr
Date: Thu Apr 3 05:41:40 2008
New Revision: 644287
URL: http://svn.apache.org/viewvc?rev=644287&view=rev
Log:
Patch from Ted Ross (see QPID-893): This patch enables management of plugged-in
store modules.
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableQueue.h
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h
incubator/qpid/trunk/qpid/specs/management-schema.xml
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableQueue.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableQueue.h?rev=644287&r1=644286&r2=644287&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableQueue.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/PersistableQueue.h Thu Apr 3
05:41:40 2008
@@ -24,6 +24,7 @@
#include <string>
#include "Persistable.h"
+#include "qpid/management/Manageable.h"
#include <boost/shared_ptr.hpp>
namespace qpid {
@@ -35,7 +36,7 @@
* persistableQueue
*/
-class ExternalQueueStore
+class ExternalQueueStore : public management::Manageable
{
public:
virtual ~ExternalQueueStore() {};
@@ -58,11 +59,7 @@
delete externalQueueStore;
};
- inline void setExternalQueueStore(ExternalQueueStore* inst){
- if (externalQueueStore!=inst && externalQueueStore)
- delete externalQueueStore;
- externalQueueStore = inst;
- };
+ virtual void setExternalQueueStore(ExternalQueueStore* inst) = 0;
inline ExternalQueueStore* getExternalQueueStore() const {return
externalQueueStore;};
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=644287&r1=644286&r2=644287&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Thu Apr 3 05:41:40
2008
@@ -632,6 +632,18 @@
return exclusive;
}
+void Queue::setExternalQueueStore(ExternalQueueStore* inst) {
+ if (externalQueueStore!=inst && externalQueueStore)
+ delete externalQueueStore;
+ externalQueueStore = inst;
+
+ if (inst) {
+ ManagementObject::shared_ptr childObj = inst->GetManagementObject();
+ if (childObj.get() != 0)
+ mgmtObject->set_storeRef(childObj->getObjectId());
+ }
+}
+
ManagementObject::shared_ptr Queue::GetManagementObject (void) const
{
return dynamic_pointer_cast<ManagementObject> (mgmtObject);
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h?rev=644287&r1=644286&r2=644287&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h Thu Apr 3 05:41:40
2008
@@ -60,7 +60,8 @@
* registered consumers or be stored until dequeued or until one
* or more consumers registers.
*/
- class Queue : public boost::enable_shared_from_this<Queue>, public
PersistableQueue, public management::Manageable {
+ class Queue : public boost::enable_shared_from_this<Queue>,
+ public PersistableQueue, public management::Manageable {
typedef std::set<Consumer*> Listeners;
typedef std::deque<QueuedMessage> Messages;
@@ -106,7 +107,7 @@
Queue(const string& name, bool autodelete = false,
MessageStore* const store = 0,
const OwnershipToken* const owner = 0,
- Manageable* parent = 0);
+ management::Manageable* parent = 0);
~Queue();
bool dispatch(Consumer&);
@@ -182,6 +183,8 @@
static Queue::shared_ptr decode(QueueRegistry& queues,
framing::Buffer& buffer);
static void tryAutoDelete(Broker& broker, Queue::shared_ptr);
+
+ virtual void setExternalQueueStore(ExternalQueueStore* inst);
// Manageable entry points
management::ManagementObject::shared_ptr GetManagementObject
(void) const;
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp?rev=644287&r1=644286&r2=644287&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp Thu Apr 3
05:41:40 2008
@@ -29,6 +29,7 @@
case STATUS_UNKNOWN_OBJECT : return "UnknownObject";
case STATUS_UNKNOWN_METHOD : return "UnknownMethod";
case STATUS_NOT_IMPLEMENTED : return "NotImplemented";
+ case STATUS_INVALID_PARAMETER : return "InvalidParameter";
}
return "??";
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h?rev=644287&r1=644286&r2=644287&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h Thu Apr 3
05:41:40 2008
@@ -39,10 +39,11 @@
typedef uint32_t status_t;
static std::string StatusText (status_t status);
- static const status_t STATUS_OK = 0;
- static const status_t STATUS_UNKNOWN_OBJECT = 1;
- static const status_t STATUS_UNKNOWN_METHOD = 2;
- static const status_t STATUS_NOT_IMPLEMENTED = 3;
+ static const status_t STATUS_OK = 0;
+ static const status_t STATUS_UNKNOWN_OBJECT = 1;
+ static const status_t STATUS_UNKNOWN_METHOD = 2;
+ static const status_t STATUS_NOT_IMPLEMENTED = 3;
+ static const status_t STATUS_INVALID_PARAMETER = 4;
// Every "Manageable" object must hold a reference to exactly one
// management object. This object is always of a class derived from
Modified: incubator/qpid/trunk/qpid/specs/management-schema.xml
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/specs/management-schema.xml?rev=644287&r1=644286&r2=644287&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/specs/management-schema.xml (original)
+++ incubator/qpid/trunk/qpid/specs/management-schema.xml Thu Apr 3 05:41:40
2008
@@ -122,6 +122,7 @@
<configElement name="durable" type="bool" access="RC"/>
<configElement name="autoDelete" type="bool" access="RC"/>
<configElement name="exclusive" type="bool" access="RC"/>
+ <configElement name="storeRef" type="objId" access="RO"
desc="Reference to persistent queue (if durable)"/>
<instElement name="msgTotalEnqueues" type="count64" unit="message"
desc="Total messages enqueued"/>
<instElement name="msgTotalDequeues" type="count64" unit="message"
desc="Total messages dequeued"/>