lmsg/MsgHandler.hh

00001 /* -*- mode: c++; c-basic-offset: 4; -*- */
00002 #ifndef LMSG_MSGHANDLER_HH
00003 #define LMSG_MSGHANDLER_HH
00004 //
00005 //   Base class for server message handlers.
00006 //
00007 
00008 #include "lmsg/MsgTypes.hh"
00009 
00010 namespace lmsg {
00011 
00012     class MsgHeader;
00013     class Message;
00014     class AppServer;
00015     class Buffer;
00016 
00017 
00025     class MsgHandler {
00026     public:
00030         MsgHandler(void);
00031 
00036         virtual ~MsgHandler(void);
00037 
00042         error_type handleBuffer(AppServer& app, Buffer& buf);
00043 
00047         virtual error_type handleMsg(AppServer& app, const MsgHeader& hdr) = 0;
00048 
00051         virtual Message& getMessage(void) = 0;
00052     private:
00053     };
00054 
00064     template<class Msg> 
00065     class Handler : public MsgHandler {
00066     public:
00067 
00071         Handler(void);
00072 
00076         ~Handler(void);
00077 
00084         error_type handleMsg(AppServer& app, const MsgHeader& hdr);
00085 
00090         Msg& getMessage(void);
00091 
00096         const Msg& getMessage(void) const;
00097 
00098     private:
00099         Msg mMessage;
00100     };
00101 
00102 }  // namespace lmsg
00103 
00104 //--------------------------------------  Default constructor
00105 template<class Msg>
00106 lmsg::Handler<Msg>::Handler(void) {
00107 }
00108 
00109 //--------------------------------------  Default destructor
00110 template<class Msg>
00111 lmsg::Handler<Msg>::~Handler(void) {
00112 }
00113 
00114 //--------------------------------------  Get the scratch message
00115 template<class Msg>
00116 Msg&
00117 lmsg::Handler<Msg>::getMessage(void) {
00118     return mMessage;
00119 }
00120 
00121 template<class Msg>
00122 const Msg&
00123 lmsg::Handler<Msg>::getMessage(void) const {
00124     return mMessage;
00125 }
00126 
00127 
00128 #endif  //  LMSG_MSGHANDLER_HH
00129 
00130 

Generated on Sun Mar 8 19:20:50 2009 for dmt by  doxygen 1.5.4