lmsg/Message.hh

00001 #ifndef LMSG_MESSAGE_HH
00002 #define LMSG_MESSAGE_HH
00003 
00004 #include "lmsg/MsgHeader.hh"
00005 #include <stdexcept>
00006 
00007 namespace lmsg {
00008 
00009   class TransInput;
00010   class TransOutput;
00011 
00019   class Message {
00020   public:
00023     Message(void) {}
00024 
00027     virtual ~Message(void) {}
00028 
00032     virtual size_type size(void) const = 0;
00033 
00038     virtual void getData(TransOutput& out) const = 0;
00039 
00044     virtual MsgHeader::MsgType getType(void) const = 0;
00045 
00050     virtual void setData(TransInput& in) throw(std::runtime_error) = 0;
00051 
00052   };   // class lmsg::Message
00053 
00054 
00060   template<unsigned int MsgID>
00061   class HdrOnlyMsg : public Message {
00062   public:
00063 
00067     HdrOnlyMsg(void) {}
00068 
00072     ~HdrOnlyMsg(void) {}
00073 
00078     size_type size(void) const {return 0;}
00079 
00083     void getData(TransOutput& out) const {}
00084 
00089     MsgHeader::MsgType getType(void) const {return MsgID;}
00090 
00094     void setData(TransInput& in) throw(std::runtime_error) {}
00095   private:
00096   };
00097 
00098 }      // namespace lmsg
00099 
00100 #endif //  def(LMSG_MESSAGE_HH)

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