00001
00002 #ifndef _MANAGEMENT_AGENT_
00003 #define _MANAGEMENT_AGENT_
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "qpid/management/ManagementObject.h"
00028 #include "qpid/framing/FieldTable.h"
00029 #include "qpid/framing/Uuid.h"
00030
00031 namespace qpid {
00032 namespace management {
00033
00034 class Agent : public ManagementObject
00035 {
00036 private:
00037
00038 static std::string packageName;
00039 static std::string className;
00040 static uint8_t md5Sum[16];
00041
00042
00043 framing::Uuid sessionId;
00044 std::string label;
00045 uint64_t registeredTo;
00046 framing::Uuid sysId;
00047
00048
00049
00050
00051 static void writeSchema (qpid::framing::Buffer& buf);
00052 void writeConfig (qpid::framing::Buffer& buf);
00053 void writeInstrumentation (qpid::framing::Buffer& buf,
00054 bool skipHeaders = false);
00055 void doMethod (std::string methodName,
00056 qpid::framing::Buffer& inBuf,
00057 qpid::framing::Buffer& outBuf);
00058 writeSchemaCall_t getWriteSchemaCall (void) { return writeSchema; }
00059
00060
00061 bool getInstChanged (void) { return false; }
00062
00063 public:
00064
00065 friend class PackageQpid;
00066 typedef boost::shared_ptr<Agent> shared_ptr;
00067
00068 Agent (Manageable* coreObject);
00069 ~Agent (void);
00070
00071 std::string getPackageName (void) { return packageName; }
00072 std::string getClassName (void) { return className; }
00073 uint8_t* getMd5Sum (void) { return md5Sum; }
00074
00075
00076
00077
00078 inline void set_sessionId (framing::Uuid val){
00079 sys::RWlock::ScopedWlock writeLock (accessLock);
00080 sessionId = val;
00081 configChanged = true;
00082 }
00083 inline void set_label (std::string val){
00084 sys::RWlock::ScopedWlock writeLock (accessLock);
00085 label = val;
00086 configChanged = true;
00087 }
00088 inline void set_registeredTo (uint64_t val){
00089 sys::RWlock::ScopedWlock writeLock (accessLock);
00090 registeredTo = val;
00091 configChanged = true;
00092 }
00093 inline void set_sysId (framing::Uuid val){
00094 sys::RWlock::ScopedWlock writeLock (accessLock);
00095 sysId = val;
00096 configChanged = true;
00097 }
00098
00099 };
00100
00101 }}
00102
00103
00104 #endif