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
00096 operator bool() const;
00097
00102 Packet& operator >>(Int8& Data);
00103 Packet& operator >>(Uint8& Data);
00104 Packet& operator >>(Int16& Data);
00105 Packet& operator >>(Uint16& Data);
00106 Packet& operator >>(Int32& Data);
00107 Packet& operator >>(Uint32& Data);
00108 Packet& operator >>(float& Data);
00109 Packet& operator >>(double& Data);
00110 Packet& operator >>(char* Data);
00111 Packet& operator >>(std::string& Data);
00112 Packet& operator >>(wchar_t* Data);
00113 Packet& operator >>(std::wstring& Data);
00114
00119 Packet& operator <<(Int8 Data);
00120 Packet& operator <<(Uint8 Data);
00121 Packet& operator <<(Int16 Data);
00122 Packet& operator <<(Uint16 Data);
00123 Packet& operator <<(Int32 Data);
00124 Packet& operator <<(Uint32 Data);
00125 Packet& operator <<(float Data);
00126 Packet& operator <<(double Data);
00127 Packet& operator <<(const char* Data);
00128 Packet& operator <<(const std::string& Data);
00129 Packet& operator <<(const wchar_t* Data);
00130 Packet& operator <<(const std::wstring& Data);
00131
00132 private :
00133
00134 friend class SocketTCP;
00135 friend class SocketUDP;
00136
00145 bool CheckSize(std::size_t Size);
00146
00151 virtual void OnSend();
00152
00157 virtual void OnReceive();
00158
00160
00162 std::vector<char> myData;
00163 std::size_t myReadPos;
00164 bool myIsValid;
00165 };
00166
00167 }
00168
00169
00170 #endif // SFML_PACKET_HPP