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) {}
 
 }}
 


Reply via email to