00001 /* -*- mode: c++; c-basic-offset: 4; -*- */ 00002 #ifndef DATAMSG_HH 00003 #define DATAMSG_HH 00004 00005 #include "lmsg/Message.hh" 00006 00007 namespace lmsg { 00008 class TransInput; 00009 class TransOutput; 00010 00025 template<class T, unsigned int MsgID> 00026 class DataMsg : public Message { 00027 public: 00028 00032 DataMsg(void) {} 00033 00037 DataMsg(const DataMsg<T,MsgID>& x) : mData(x.mData) {} 00038 00042 explicit DataMsg(const T& x) : mData(x) {} 00043 00047 virtual ~DataMsg(void) {} 00048 00053 size_type size(void) const {return 0;} 00054 00058 void getData(TransOutput& out) const; 00059 00064 MsgHeader::MsgType getType(void) const {return MsgID;} 00065 00069 void setData(TransInput& in) throw(std::runtime_error); 00070 00075 T& refData(void) {return mData;} 00076 00081 const T& refData(void) const {return mData;} 00082 00083 private: 00084 T mData; 00085 }; 00086 00087 } // namespace lmsg 00088 00089 #endif // DATAMSG_HH
1.5.4