ClientRequest.h

Go to the documentation of this file.
00001 /* ex: set tabstop=4 expandtab: */
00002 /*                                                                                                                      */
00003 /*  (c) 2004-2006 Iowa State University                                         */
00004 /*      see the LICENSE file in the top level directory         */
00005 /*                                                                                                                      */
00006 /* $Header: /afs/scl/project/cvsroot/fountain/source/clients/ClientRequest.h,v 1.18 2006/03/05 22:05:15 samm Exp $ */
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

Generated on Wed Mar 8 14:43:30 2006 for Fountain by  doxygen 1.4.6