00001 #ifndef OUTGOING_PACKET_HH_ 00002 # define OUTGOING_PACKET_HH_ 00003 00004 # include "packet.hh" 00005 00006 namespace packets 00007 { 00008 class OutgoingPacket : public DataPacket 00009 { 00010 public: 00011 OutgoingPacket(); 00012 00013 virtual std::string &get_data(); 00014 virtual void print_tag(std::ostream &os) const = 0; 00015 virtual void print(std::ostream &os) const; 00016 00017 public: 00018 template <typename T> 00019 OutgoingPacket &operator <<(T e) 00020 { 00021 char *buf = (char *)&e; 00022 _data.append(buf, sizeof(T)); 00023 return *this; 00024 } 00025 00026 OutgoingPacket &operator <<(std::string s); 00027 OutgoingPacket &operator <<(char *b); 00028 OutgoingPacket &operator <<(char c); 00029 }; 00030 }; 00031 00032 #endif