Author: tross
Date: Wed Sep 10 12:14:01 2008
New Revision: 693933
URL: http://svn.apache.org/viewvc?rev=693933&view=rev
Log:
QPID-1279 Implementations of management methods can now return error strings
along with its own error codes
Modified:
incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/example.cpp
incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py
incubator/qpid/trunk/qpid/cpp/managementgen/qmf/templates/Class.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.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/broker/SessionState.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h
incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp
incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h
Modified: incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/example.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/example.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/example.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/examples/qmf-agent/example.cpp Wed Sep 10
12:14:01 2008
@@ -65,7 +65,7 @@
{ return mgmtObject; }
void doLoop();
- status_t ManagementMethod (uint32_t methodId, Args& args);
+ status_t ManagementMethod (uint32_t methodId, Args& args, string& text);
};
class ChildClass : public Manageable
@@ -116,7 +116,7 @@
}
}
-Manageable::status_t CoreClass::ManagementMethod(uint32_t methodId, Args& args)
+Manageable::status_t CoreClass::ManagementMethod(uint32_t methodId, Args&
args, string& /*text*/)
{
Mutex::ScopedLock _lock(vectorLock);
Modified: incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py (original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/qmf/schema.py Wed Sep 10
12:14:01 2008
@@ -1004,9 +1004,9 @@
arg.name, "inBuf") + ";\n")
stream.write (" status = coreObject->ManagementMethod (METHOD_" +\
- method.getName().upper() + ", ioArgs);\n")
+ method.getName().upper() + ", ioArgs, text);\n")
stream.write (" outBuf.putLong (status);\n")
- stream.write (" outBuf.putShortString (Manageable::StatusText
(status));\n")
+ stream.write (" outBuf.putShortString (Manageable::StatusText
(status, text));\n")
for arg in method.args:
if arg.getDir () == "O" or arg.getDir () == "IO":
stream.write (" " +\
Modified: incubator/qpid/trunk/qpid/cpp/managementgen/qmf/templates/Class.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/managementgen/qmf/templates/Class.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/managementgen/qmf/templates/Class.cpp
(original)
+++ incubator/qpid/trunk/qpid/cpp/managementgen/qmf/templates/Class.cpp Wed Sep
10 12:14:01 2008
@@ -172,9 +172,10 @@
void /*MGEN:Class.NameCap*/::doMethod (/*MGEN:Class.DoMethodArgs*/)
{
Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
+ std::string text;
/*MGEN:Class.MethodHandlers*/
- outBuf.putLong (status);
- outBuf.putShortString (Manageable::StatusText (status));
+ outBuf.putLong(status);
+ outBuf.putShortString(Manageable::StatusText(status, text));
}
/*MGEN:Class.EventMethodBodies*/
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp Wed Sep 10
12:14:01 2008
@@ -178,7 +178,9 @@
return (management::ManagementObject*) mgmtObject;
}
-management::Manageable::status_t Bridge::ManagementMethod(uint32_t methodId,
management::Args& /*args*/)
+management::Manageable::status_t Bridge::ManagementMethod(uint32_t methodId,
+ management::Args&
/*args*/,
+ string&)
{
if (methodId == management::Bridge::METHOD_CLOSE) {
//notify that we are closed
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h Wed Sep 10 12:14:01
2008
@@ -54,7 +54,9 @@
bool isDurable() { return args.i_durable; }
management::ManagementObject* GetManagementObject() const;
- management::Manageable::status_t ManagementMethod(uint32_t methodId,
management::Args& args);
+ management::Manageable::status_t ManagementMethod(uint32_t methodId,
+ management::Args& args,
+ std::string& text);
// PersistableConfig:
void setPersistenceId(uint64_t id) const;
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp Wed Sep 10
12:14:01 2008
@@ -321,7 +321,8 @@
}
Manageable::status_t Broker::ManagementMethod (uint32_t methodId,
- Args& args)
+ Args& args,
+ string&)
{
Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
@@ -332,7 +333,7 @@
case management::Broker::METHOD_ECHO :
status = Manageable::STATUS_OK;
break;
- case management::Broker::METHOD_CONNECT : {
+ case management::Broker::METHOD_CONNECT : {
management::ArgsBrokerConnect& hp=
dynamic_cast<management::ArgsBrokerConnect&>(args);
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h Wed Sep 10 12:14:01
2008
@@ -156,7 +156,9 @@
management::ManagementObject* GetManagementObject (void) const;
management::Manageable* GetVhostObject (void) const;
- management::Manageable::status_t ManagementMethod (uint32_t methodId,
management::Args& args);
+ management::Manageable::status_t ManagementMethod (uint32_t methodId,
+ management::Args& args,
+ std::string& text);
/** Add to the broker's protocolFactorys */
void registerProtocolFactory(boost::shared_ptr<sys::ProtocolFactory>);
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.cpp Wed Sep 10
12:14:01 2008
@@ -222,7 +222,7 @@
return (ManagementObject*) mgmtObject;
}
-Manageable::status_t Connection::ManagementMethod(uint32_t methodId, Args&)
+Manageable::status_t Connection::ManagementMethod(uint32_t methodId, Args&,
string&)
{
Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Connection.h Wed Sep 10
12:14:01 2008
@@ -83,7 +83,7 @@
// Manageable entry points
management::ManagementObject* GetManagementObject (void) const;
management::Manageable::status_t
- ManagementMethod (uint32_t methodId, management::Args& args);
+ ManagementMethod (uint32_t methodId, management::Args& args,
std::string&);
void requestIOProcessing (boost::function0<void>);
void recordFromServer (framing::AMQFrame& frame);
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.cpp Wed Sep 10
12:14:01 2008
@@ -149,12 +149,6 @@
return (ManagementObject*) mgmtBinding;
}
-Manageable::status_t Exchange::Binding::ManagementMethod (uint32_t, Args&)
-{
- return Manageable::STATUS_UNKNOWN_METHOD;
-}
-
-
Exchange::MatchQueue::MatchQueue(Queue::shared_ptr q) : queue(q) {}
bool Exchange::MatchQueue::operator()(Exchange::Binding::shared_ptr b)
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h Wed Sep 10
12:14:01 2008
@@ -60,7 +60,6 @@
framing::FieldTable args = framing::FieldTable ());
~Binding ();
management::ManagementObject* GetManagementObject () const;
- management::Manageable::status_t ManagementMethod (uint32_t
methodId, management::Args& args);
};
struct MatchQueue
{
@@ -104,9 +103,7 @@
static Exchange::shared_ptr decode(ExchangeRegistry& exchanges,
framing::Buffer& buffer);
// Manageable entry points
- management::ManagementObject* GetManagementObject (void) const;
- management::Manageable::status_t
- ManagementMethod (uint32_t, management::Args&) { return
management::Manageable::STATUS_UNKNOWN_METHOD; }
+ management::ManagementObject* GetManagementObject(void) const;
};
}
}
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.cpp Wed Sep 10 12:14:01
2008
@@ -324,7 +324,7 @@
return (ManagementObject*) mgmtObject;
}
-Manageable::status_t Link::ManagementMethod (uint32_t op, management::Args&
args)
+Manageable::status_t Link::ManagementMethod (uint32_t op, management::Args&
args, string&)
{
switch (op)
{
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Link.h Wed Sep 10 12:14:01
2008
@@ -123,8 +123,8 @@
static Link::shared_ptr decode(LinkRegistry& links,
framing::Buffer& buffer);
// Manageable entry points
- management::ManagementObject* GetManagementObject (void) const;
- management::Manageable::status_t ManagementMethod (uint32_t,
management::Args&);
+ management::ManagementObject* GetManagementObject(void) const;
+ management::Manageable::status_t ManagementMethod(uint32_t,
management::Args&, std::string&);
};
}
}
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=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Wed Sep 10 12:14:01
2008
@@ -724,8 +724,7 @@
return (ManagementObject*) mgmtObject;
}
-Manageable::status_t Queue::ManagementMethod (uint32_t methodId,
- Args& args)
+Manageable::status_t Queue::ManagementMethod (uint32_t methodId, Args& args,
string&)
{
Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
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=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h Wed Sep 10 12:14:01
2008
@@ -207,7 +207,7 @@
// Manageable entry points
management::ManagementObject* GetManagementObject (void) const;
management::Manageable::status_t
- ManagementMethod (uint32_t methodId, management::Args& args);
+ ManagementMethod (uint32_t methodId, management::Args& args,
std::string& text);
/** Apply f to each Message on the queue. */
template <class F> void eachMessage(const F& f) const {
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.cpp Wed Sep 10
12:14:01 2008
@@ -122,7 +122,8 @@
}
Manageable::status_t SessionState::ManagementMethod (uint32_t methodId,
- Args& /*args*/)
+ Args& /*args*/,
+ string& /*text*/)
{
Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionState.h Wed Sep 10
12:14:01 2008
@@ -96,7 +96,7 @@
// Manageable entry points
management::ManagementObject* GetManagementObject (void) const;
management::Manageable::status_t
- ManagementMethod (uint32_t methodId, management::Args& args);
+ ManagementMethod (uint32_t methodId, management::Args& args,
std::string&);
void readyToSend();
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h?rev=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Vhost.h Wed Sep 10 12:14:01
2008
@@ -41,9 +41,6 @@
management::ManagementObject* GetManagementObject (void) const
{ return mgmtObject; }
-
- management::Manageable::status_t ManagementMethod (uint32_t,
management::Args&)
- { return management::Manageable::STATUS_OK; }
};
}}
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=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.cpp Wed Sep 10
12:14:01 2008
@@ -20,9 +20,13 @@
#include "Manageable.h"
using namespace qpid::management;
+using std::string;
-std::string Manageable::StatusText (status_t status)
+string Manageable::StatusText (status_t status, string text)
{
+ if ((status & STATUS_USER) == STATUS_USER)
+ return text;
+
switch (status)
{
case STATUS_OK : return "OK";
@@ -37,7 +41,7 @@
return "??";
}
-Manageable::status_t Manageable::ManagementMethod (uint32_t, Args&)
+Manageable::status_t Manageable::ManagementMethod (uint32_t, Args&,
std::string&)
{
return STATUS_UNKNOWN_METHOD;
}
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=693933&r1=693932&r2=693933&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/management/Manageable.h Wed Sep 10
12:14:01 2008
@@ -31,12 +31,12 @@
{
public:
- virtual ~Manageable (void) = 0;
+ virtual ~Manageable(void) = 0;
// status_t is a type used to pass completion status from the method
handler.
//
typedef uint32_t status_t;
- static std::string StatusText (status_t status);
+ static std::string StatusText(status_t status, std::string text =
std::string());
static const status_t STATUS_OK = 0;
static const status_t STATUS_UNKNOWN_OBJECT = 1;
@@ -45,6 +45,7 @@
static const status_t STATUS_INVALID_PARAMETER = 4;
static const status_t STATUS_FEATURE_NOT_IMPLEMENTED = 5;
static const status_t STATUS_FORBIDDEN = 6;
+ static const status_t STATUS_USER = 0x00010000;
// Every "Manageable" object must hold a reference to exactly one
// management object. This object is always of a class derived from
@@ -52,17 +53,17 @@
//
// This accessor function returns a pointer to the management object.
//
- virtual ManagementObject* 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
// on this object. The input and output arguments are specific to the
// method being called and must be down-cast to the appropriate sub class
// before use.
- virtual status_t ManagementMethod (uint32_t methodId, Args& args);
+ virtual status_t ManagementMethod(uint32_t methodId, Args& args,
std::string& text);
};
-inline Manageable::~Manageable (void) {}
+inline Manageable::~Manageable(void) {}
}}