00001
00002
00003
00004
00005
00006
00015 #ifndef CLIENT_REQUEST_H__
00016 #define CLIENT_REQUEST_H__
00017
00018 #include "define.h"
00019 #include "FountainMessage.h"
00020 #include <bamboo/SSSXML.h>
00021 #include <string>
00022 #include "LokiInclude.h"
00023
00029 typedef Loki::SmartPtr<FountainMessage> ClientRequestPtr;
00030
00036 template<FountainMessage::MessageAction T>
00037 class ClientRequest : public FountainMessage {
00038 public:
00039 static ClientRequestPtr create() { LOKI_STATIC_CHECK(false, This_MessageAction_not_supported); return NULL; }
00040
00041 private:
00042 ClientRequest();
00043 };
00044
00045 template<>
00046 class ClientRequest<FountainMessage::Query> : public FountainMessage {
00047 public:
00048 static ClientRequestPtr create() { return new ClientRequest(); }
00049
00050 private:
00051 ClientRequest() : FountainMessage(Loki::Int2Type<BambooLib::requestElement>(), FountainMessage::Query) {
00052 workingElement->addChildElement("Object", sss_convert(BambooLib::nodeObject));
00053 }
00054 };
00055
00056 template<>
00057 class ClientRequest<FountainMessage::admin> : public FountainMessage {
00058 public:
00059 static ClientRequestPtr create() { return new ClientRequest(); }
00060
00061 private:
00062 ClientRequest() : FountainMessage(Loki::Int2Type<BambooLib::requestElement>(), FountainMessage::admin) {
00063 workingElement->addChildElement("Object", sss_convert(BambooLib::serverObject));
00064 }
00065 };
00066
00067 template<>
00068 class ClientRequest<FountainMessage::trace> : public FountainMessage {
00069 public:
00070 static ClientRequestPtr create() { return new ClientRequest(); }
00071
00072 private:
00073 ClientRequest() : FountainMessage(Loki::Int2Type<BambooLib::requestElement>(), FountainMessage::trace) {
00074 workingElement->addChildElement("Object", sss_convert(BambooLib::serverObject));
00075 }
00076 };
00077
00078 template<>
00079 class ClientRequest<FountainMessage::bomb> : public FountainMessage {
00080 public:
00081 static ClientRequestPtr create(const std::string& bombString);
00082
00083 private:
00084 ClientRequest() : FountainMessage(Loki::Int2Type<BambooLib::requestElement>(), FountainMessage::bomb) {
00085 workingElement->addChildElement("Object", sss_convert(BambooLib::serverObject));
00086 }
00087 };
00088
00089 template<>
00090 class ClientRequest<FountainMessage::pingPong> : public FountainMessage {
00091 public:
00092 static ClientRequestPtr create(const std::string& numPingPongs);
00093
00094 private:
00095 ClientRequest() : FountainMessage(Loki::Int2Type<BambooLib::requestElement>(), FountainMessage::pingPong) {
00096 workingElement->addChildElement("Object", sss_convert(BambooLib::serverObject));
00097 }
00098 };
00099
00100 #endif