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
00033 struct SchemaArgumentImpl;
00034 struct SchemaMethodImpl;
00035 struct SchemaPropertyImpl;
00036 struct SchemaStatisticImpl;
00037 struct SchemaObjectClassImpl;
00038 struct SchemaEventClassImpl;
00039 struct SchemaClassKeyImpl;
00040
00043 class SchemaArgument {
00044 public:
00045 SchemaArgument(const char* name, Typecode typecode);
00046 SchemaArgument(const SchemaArgument& from);
00047 ~SchemaArgument();
00048 void setDirection(Direction dir);
00049 void setUnit(const char* val);
00050 void setDesc(const char* desc);
00051 const char* getName() const;
00052 Typecode getType() const;
00053 Direction getDirection() const;
00054 const char* getUnit() const;
00055 const char* getDesc() const;
00056
00057 private:
00058 friend struct SchemaArgumentImpl;
00059 friend struct SchemaMethodImpl;
00060 friend struct SchemaEventClassImpl;
00061 SchemaArgument(SchemaArgumentImpl* impl);
00062 SchemaArgumentImpl* impl;
00063 };
00064
00067 class SchemaMethod {
00068 public:
00069 SchemaMethod(const char* name);
00070 SchemaMethod(const SchemaMethod& from);
00071 ~SchemaMethod();
00072 void addArgument(const SchemaArgument* argument);
00073 void setDesc(const char* desc);
00074 const char* getName() const;
00075 const char* getDesc() const;
00076 int getArgumentCount() const;
00077 const SchemaArgument* getArgument(int idx) const;
00078
00079 private:
00080 friend struct SchemaMethodImpl;
00081 friend struct SchemaObjectClassImpl;
00082 friend class AgentImpl;
00083 SchemaMethod(SchemaMethodImpl* impl);
00084 SchemaMethodImpl* impl;
00085 };
00086
00089 class SchemaProperty {
00090 public:
00091 SchemaProperty(const char* name, Typecode typecode);
00092 SchemaProperty(const SchemaProperty& from);
00093 ~SchemaProperty();
00094 void setAccess(Access access);
00095 void setIndex(bool val);
00096 void setOptional(bool val);
00097 void setUnit(const char* val);
00098 void setDesc(const char* desc);
00099 const char* getName() const;
00100 Typecode getType() const;
00101 Access getAccess() const;
00102 bool isIndex() const;
00103 bool isOptional() const;
00104 const char* getUnit() const;
00105 const char* getDesc() const;
00106
00107 private:
00108 friend struct SchemaPropertyImpl;
00109 friend struct SchemaObjectClassImpl;
00110 SchemaProperty(SchemaPropertyImpl* impl);
00111 SchemaPropertyImpl* impl;
00112 };
00113
00116 class SchemaStatistic {
00117 public:
00118 SchemaStatistic(const char* name, Typecode typecode);
00119 SchemaStatistic(const SchemaStatistic& from);
00120 ~SchemaStatistic();
00121 void setUnit(const char* val);
00122 void setDesc(const char* desc);
00123 const char* getName() const;
00124 Typecode getType() const;
00125 const char* getUnit() const;
00126 const char* getDesc() const;
00127
00128 private:
00129 friend struct SchemaStatisticImpl;
00130 friend struct SchemaObjectClassImpl;
00131 SchemaStatistic(SchemaStatisticImpl* impl);
00132 SchemaStatisticImpl* impl;
00133 };
00134
00137 class SchemaClassKey {
00138 public:
00139 SchemaClassKey(const SchemaClassKey& from);
00140 ~SchemaClassKey();
00141
00142 const char* getPackageName() const;
00143 const char* getClassName() const;
00144 const uint8_t* getHash() const;
00145 const char* asString() const;
00146
00147 bool operator==(const SchemaClassKey& other) const;
00148 bool operator<(const SchemaClassKey& other) const;
00149
00150 private:
00151 friend struct SchemaClassKeyImpl;
00152 friend class BrokerProxyImpl;
00153 friend struct ConsoleImpl;
00154 SchemaClassKey(SchemaClassKeyImpl* impl);
00155 SchemaClassKeyImpl* impl;
00156 };
00157
00160 class SchemaObjectClass {
00161 public:
00162 SchemaObjectClass(const char* package, const char* name);
00163 SchemaObjectClass(const SchemaObjectClass& from);
00164 ~SchemaObjectClass();
00165 void addProperty(const SchemaProperty* property);
00166 void addStatistic(const SchemaStatistic* statistic);
00167 void addMethod(const SchemaMethod* method);
00168
00169 const SchemaClassKey* getClassKey() const;
00170 int getPropertyCount() const;
00171 int getStatisticCount() const;
00172 int getMethodCount() const;
00173 const SchemaProperty* getProperty(int idx) const;
00174 const SchemaStatistic* getStatistic(int idx) const;
00175 const SchemaMethod* getMethod(int idx) const;
00176
00177 private:
00178 friend struct SchemaObjectClassImpl;
00179 friend class BrokerProxyImpl;
00180 friend class AgentImpl;
00181 SchemaObjectClass(SchemaObjectClassImpl* impl);
00182 SchemaObjectClassImpl* impl;
00183 };
00184
00187 class SchemaEventClass {
00188 public:
00189 SchemaEventClass(const char* package, const char* name);
00190 SchemaEventClass(const SchemaEventClass& from);
00191 ~SchemaEventClass();
00192 void addArgument(const SchemaArgument* argument);
00193 void setDesc(const char* desc);
00194
00195 const SchemaClassKey* getClassKey() const;
00196 int getArgumentCount() const;
00197 const SchemaArgument* getArgument(int idx) const;
00198
00199 private:
00200 friend struct SchemaEventClassImpl;
00201 friend class BrokerProxyImpl;
00202 friend class AgentImpl;
00203 SchemaEventClass(SchemaEventClassImpl* impl);
00204 SchemaEventClassImpl* impl;
00205 };
00206 }
00207 }
00208
00209 #endif
00210