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 std::size_t GetDataSize() const;
00089
00096 bool EndOfPacket() const;
00097
00104 operator bool() const;
00105
00110 Packet& operator >>(bool& Data);
00111 Packet& operator >>(Int8& Data);
00112 Packet& operator >>(Uint8& Data);
00113 Packet& operator >>(Int16& Data);
00114 Packet& operator >>(Uint16& Data);
00115 Packet& operator >>(Int32& Data);
00116 Packet& operator >>(Uint32& Data);
00117 Packet& operator >>(float& Data);
00118 Packet& operator >>(double& Data);
00119 Packet& operator >>(char* Data);
00120 Packet& operator >>(std::string& Data);
00121 Packet& operator >>(wchar_t* Data);
00122 Packet& operator >>(std::wstring& Data);
00123
00128 Packet& operator <<(bool Data);
00129 Packet& operator <<(Int8 Data);
00130 Packet& operator <<(Uint8 Data);
00131 Packet& operator <<(Int16 Data);
00132 Packet& operator <<(Uint16 Data);
00133 Packet& operator <<(Int32 Data);
00134 Packet& operator <<(Uint32 Data);
00135 Packet& operator <<(float Data);
00136 Packet& operator <<(double Data);
00137 Packet& operator <<(const char* Data);
00138 Packet& operator <<(const std::string& Data);
00139 Packet& operator <<(const wchar_t* Data);
00140 Packet& operator <<(const std::wstring& Data);
00141
00142 private :
00143
00144 friend class SocketTCP;
00145 friend class SocketUDP;
00146
00155 bool CheckSize(std::size_t Size);
00156
00165 virtual const char* OnSend(std::size_t& DataSize);
00166
00174 virtual void OnReceive(const char* Data, std::size_t DataSize);
00175
00177
00179 std::vector<char> myData;
00180 std::size_t myReadPos;
00181 bool myIsValid;
00182 };
00183
00184 }
00185
00186
00187 #endif // SFML_PACKET_HPP