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)
1.5.4