00001 #ifndef _QmfEngineSchema_
00002 #define _QmfEngineSchema_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <qmf/engine/Typecode.h>
00024 #include <qpid/sys/IntegerTypes.h>
00025
00026 namespace qmf {
00027 namespace engine {
00028
00029 enum Access { ACCESS_READ_CREATE = 1, ACCESS_READ_WRITE = 2, ACCESS_READ_ONLY = 3 };
00030 enum Direction { DIR_IN = 1, DIR_OUT = 2, DIR_IN_OUT = 3 };
00031 enum ClassKind { CLASS_OBJECT = 1, CLASS_EVENT = 2 };
00032 enum Severity { SEV_EMERG = 0, SEV_ALERT = 1, SEV_CRIT = 2, SEV_ERROR = 3, SEV_WARN = 4, SEV_NOTICE = 5, SEV_INFORM = 6, SEV_DEBUG = 7 };
00033
00034 struct SchemaArgumentImpl;
00035 struct SchemaMethodImpl;
00036 struct SchemaPropertyImpl;
00037 struct SchemaStatisticImpl;
00038 struct SchemaObjectClassImpl;
00039 struct SchemaEventClassImpl;
00040 struct SchemaClassKeyImpl;
00041
00044 class SchemaArgument {
00045 public:
00046 SchemaArgument(const char* name, Typecode typecode);
00047 SchemaArgument(const SchemaArgument& from);
00048 ~SchemaArgument();
00049 void setDirection(Direction dir);
00050 void setUnit(const char* val);
00051 void setDesc(const char* desc);
00052 const char* getName() const;
00053 Typecode getType() const;
00054 Direction getDirection() const;
00055 const char* getUnit() const;
00056 const char* getDesc() const;
00057
00058 private:
00059 friend struct SchemaArgumentImpl;
00060 friend struct SchemaMethodImpl;
00061 friend struct SchemaEventClassImpl;
00062 SchemaArgument(SchemaArgumentImpl* impl);
00063 SchemaArgumentImpl* impl;
00064 };
00065
00068 class SchemaMethod {
00069 public:
00070 SchemaMethod(const char* name);
00071 SchemaMethod(const SchemaMethod& from);
00072 ~SchemaMethod();
00073 void addArgument(const SchemaArgument* argument);
00074 void setDesc(const char* desc);
00075 const char* getName() const;
00076 const char* getDesc() const;
00077 int getArgumentCount() const;
00078 const SchemaArgument* getArgument(int idx) const;
00079
00080 private:
00081 friend struct SchemaMethodImpl;
00082 friend struct SchemaObjectClassImpl;
00083 friend class AgentImpl;
00084 SchemaMethod(SchemaMethodImpl* impl);
00085 SchemaMethodImpl* impl;
00086 };
00087
00090 class SchemaProperty {
00091 public:
00092 SchemaProperty(const char* name, Typecode typecode);
00093 SchemaProperty(const SchemaProperty& from);
00094 ~SchemaProperty();
00095 void setAccess(Access access);
00096 void setIndex(bool val);
00097 void setOptional(bool val);
00098 void setUnit(const char* val);
00099 void setDesc(const char* desc);
00100 const char* getName() const;
00101 Typecode getType() const;
00102 Access getAccess() const;
00103 bool isIndex() const;
00104 bool isOptional() const;
00105 const char* getUnit() const;
00106 const char* getDesc() const;
00107
00108 private:
00109 friend struct SchemaPropertyImpl;
00110 friend struct SchemaObjectClassImpl;
00111 SchemaProperty(SchemaPropertyImpl* impl);
00112 SchemaPropertyImpl* impl;
00113 };
00114
00117 class SchemaStatistic {
00118 public:
00119 SchemaStatistic(const char* name, Typecode typecode);
00120 SchemaStatistic(const SchemaStatistic& from);
00121 ~SchemaStatistic();
00122 void setUnit(const char* val);
00123 void setDesc(const char* desc);
00124 const char* getName() const;
00125 Typecode getType() const;
00126 const char* getUnit() const;
00127 const char* getDesc() const;
00128
00129 private:
00130 friend struct SchemaStatisticImpl;
00131 friend struct SchemaObjectClassImpl;
00132 SchemaStatistic(SchemaStatisticImpl* impl);
00133 SchemaStatisticImpl* impl;
00134 };
00135
00138 class SchemaClassKey {
00139 public:
00140 SchemaClassKey(const SchemaClassKey& from);
00141 ~SchemaClassKey();
00142
00143 const char* getPackageName() const;
00144 const char* getClassName() const;
00145 const uint8_t* getHash() const;
00146 const char* asString() const;
00147
00148 bool operator==(const SchemaClassKey& other) const;
00149 bool operator<(const SchemaClassKey& other) const;
00150
00151 private:
00152 friend struct SchemaClassKeyImpl;
00153 friend class BrokerProxyImpl;
00154 friend class ConsoleImpl;
00155 SchemaClassKey(SchemaClassKeyImpl* impl);
00156 SchemaClassKeyImpl* impl;
00157 };
00158
00161 class SchemaObjectClass {
00162 public:
00163 SchemaObjectClass(const char* package, const char* name);
00164 SchemaObjectClass(const SchemaObjectClass& from);
00165 ~SchemaObjectClass();
00166 void addProperty(const SchemaProperty* property);
00167 void addStatistic(const SchemaStatistic* statistic);
00168 void addMethod(const SchemaMethod* method);
00169
00170 const SchemaClassKey* getClassKey() const;
00171 int getPropertyCount() const;
00172 int getStatisticCount() const;
00173 int getMethodCount() const;
00174 const SchemaProperty* getProperty(int idx) const;
00175 const SchemaStatistic* getStatistic(int idx) const;
00176 const SchemaMethod* getMethod(int idx) const;
00177
00178 private:
00179 friend struct SchemaObjectClassImpl;
00180 friend class BrokerProxyImpl;
00181 friend class AgentImpl;
00182 SchemaObjectClass(SchemaObjectClassImpl* impl);
00183 SchemaObjectClassImpl* impl;
00184 };
00185
00188 class SchemaEventClass {
00189 public:
00190 SchemaEventClass(const char* package, const char* name, Severity severity);
00191 SchemaEventClass(const SchemaEventClass& from);
00192 ~SchemaEventClass();
00193 void addArgument(const SchemaArgument* argument);
00194 void setDesc(const char* desc);
00195
00196 const SchemaClassKey* getClassKey() const;
00197 Severity getSeverity() const;
00198 int getArgumentCount() const;
00199 const SchemaArgument* getArgument(int idx) const;
00200
00201 private:
00202 friend struct SchemaEventClassImpl;
00203 friend class BrokerProxyImpl;
00204 friend class AgentImpl;
00205 SchemaEventClass(SchemaEventClassImpl* impl);
00206 SchemaEventClassImpl* impl;
00207 };
00208 }
00209 }
00210
00211 #endif
00212