summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/management
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-09-10 19:14:01 +0000
committerTed Ross <tross@apache.org>2008-09-10 19:14:01 +0000
commit51ea054146d0af71640bd44e8e75494847216a31 (patch)
treef262995946ace31dbb3d3660db9df58e4f412ac3 /cpp/src/qpid/management
parent0b778c328001d25b3118450c0bfabb3e0b918971 (diff)
downloadqpid-python-51ea054146d0af71640bd44e8e75494847216a31.tar.gz
QPID-1279 Implementations of management methods can now return error strings along with its own error codes
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@693933 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/management')
-rw-r--r--cpp/src/qpid/management/Manageable.cpp8
-rw-r--r--cpp/src/qpid/management/Manageable.h11
2 files changed, 12 insertions, 7 deletions
diff --git a/cpp/src/qpid/management/Manageable.cpp b/cpp/src/qpid/management/Manageable.cpp
index 19fba87fde..08bb541fc7 100644
--- a/cpp/src/qpid/management/Manageable.cpp
+++ b/cpp/src/qpid/management/Manageable.cpp
@@ -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 @@ std::string Manageable::StatusText (status_t status)
return "??";
}
-Manageable::status_t Manageable::ManagementMethod (uint32_t, Args&)
+Manageable::status_t Manageable::ManagementMethod (uint32_t, Args&, std::string&)
{
return STATUS_UNKNOWN_METHOD;
}
diff --git a/cpp/src/qpid/management/Manageable.h b/cpp/src/qpid/management/Manageable.h
index 4e2f33b625..afa5c968f7 100644
--- a/cpp/src/qpid/management/Manageable.h
+++ b/cpp/src/qpid/management/Manageable.h
@@ -31,12 +31,12 @@ class Manageable
{
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 @@ class Manageable
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 @@ class Manageable
//
// 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) {}
}}