00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_PACKET_HPP
00026 #define SFML_PACKET_HPP
00027
00029
00031 #include <SFML/Config.hpp>
00032 #include <string>
00033 #include <vector>
00034
00035
00036 namespace sf
00037 {
00041 class SFML_API Packet
00042 {
00043 public :
00044
00049 Packet();
00050
00055 virtual ~Packet();
00056
00064 void Append(const void* Data, std::size_t SizeInBytes);
00065
00070 void Clear();
00071
00080 const char* GetData() const;
00081
00088 Uint32 GetDataSize() const;
00089
00094 Packet& operator >>(Int8& Data);
00095 Packet& operator >>(Uint8& Data);
00096 Packet& operator >>(Int16& Data);
00097 Packet& operator >>(Uint16& Data);
00098 Packet& operator >>(Int32& Data);
00099 Packet& operator >>(Uint32& Data);
00100 Packet& operator >>(float& Data);
00101 Packet& operator >>(double& Data);
00102 Packet& operator >>(char* Data);
00103 Packet& operator >>(std::string& Data);
00104
00109 Packet& operator <<(Int8 Data);
00110 Packet& operator <<(Uint8 Data);
00111 Packet& operator <<(Int16 Data);
00112 Packet& operator <<(Uint16 Data);
00113 Packet& operator <<(Int32 Data);
00114 Packet& operator <<(Uint32 Data);
00115 Packet& operator <<(float Data);
00116 Packet& operator <<(double Data);
00117 Packet& operator <<(const char* Data);
00118 Packet& operator <<(const std::string& Data);
00119
00120 private :
00121
00122 friend class SocketTCP;
00123 friend class SocketUDP;
00124
00129 virtual void OnSend();
00130
00135 virtual void OnReceive();
00136
00138
00140 std::vector<char> myData;
00141 std::size_t myReadPos;
00142 };
00143
00144 }
00145
00146
00147 #endif // SFML_PACKET_HPP