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
00117 Packet& operator <<(Int8 Data);
00118 Packet& operator <<(Uint8 Data);
00119 Packet& operator <<(Int16 Data);
00120 Packet& operator <<(Uint16 Data);
00121 Packet& operator <<(Int32 Data);
00122 Packet& operator <<(Uint32 Data);
00123 Packet& operator <<(float Data);
00124 Packet& operator <<(double Data);
00125 Packet& operator <<(const char* Data);
00126 Packet& operator <<(const std::string& Data);
00127
00128 private :
00129
00130 friend class SocketTCP;
00131 friend class SocketUDP;
00132
00141 bool CheckSize(std::size_t Size);
00142
00147 virtual void OnSend();
00148
00153 virtual void OnReceive();
00154
00156
00158 std::vector<char> myData;
00159 std::size_t myReadPos;
00160 bool myIsValid;
00161 };
00162
00163 }
00164
00165
00166 #endif // SFML_PACKET_HPP