SFML - Simple and Fast Multimedia Library

SFML 2.6.2
Loading...
Searching...
No Matches
Packet.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2023 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef SFML_PACKET_HPP
26#define SFML_PACKET_HPP
27
29// Headers
31#include <SFML/Network/Export.hpp>
32#include <string>
33#include <vector>
34
35
36namespace sf
37{
38class String;
39class TcpSocket;
40class UdpSocket;
41
47 class SFML_NETWORK_API Packet
48{
49 // A bool-like type that cannot be converted to integer or pointer types
50 typedef bool (Packet::*BoolType)(std::size_t);
51
52public:
53
60 Packet();
61
66 virtual ~Packet();
67
78 void append(const void* data, std::size_t sizeInBytes);
79
90 std::size_t getReadPosition() const;
91
100 void clear();
101
115 const void* getData() const;
116
128 std::size_t getDataSize() const;
129
142 bool endOfPacket() const;
143
144public:
145
184 operator BoolType() const;
185
190 Packet& operator >>(bool& data);
191
195 Packet& operator >>(Int8& data);
196
200 Packet& operator >>(Uint8& data);
201
205 Packet& operator >>(Int16& data);
206
210 Packet& operator >>(Uint16& data);
211
215 Packet& operator >>(Int32& data);
216
220 Packet& operator >>(Uint32& data);
221
225 Packet& operator >>(Int64& data);
226
230 Packet& operator >>(Uint64& data);
231
235 Packet& operator >>(float& data);
236
240 Packet& operator >>(double& data);
241
245 Packet& operator >>(char* data);
246
250 Packet& operator >>(std::string& data);
251
255 Packet& operator >>(wchar_t* data);
256
260 Packet& operator >>(std::wstring& data);
261
265 Packet& operator >>(String& data);
266
271 Packet& operator <<(bool data);
272
276 Packet& operator <<(Int8 data);
277
281 Packet& operator <<(Uint8 data);
282
286 Packet& operator <<(Int16 data);
287
291 Packet& operator <<(Uint16 data);
292
296 Packet& operator <<(Int32 data);
297
301 Packet& operator <<(Uint32 data);
302
306 Packet& operator <<(Int64 data);
307
311 Packet& operator <<(Uint64 data);
312
316 Packet& operator <<(float data);
317
321 Packet& operator <<(double data);
322
326 Packet& operator <<(const char* data);
327
331 Packet& operator <<(const std::string& data);
332
336 Packet& operator <<(const wchar_t* data);
337
341 Packet& operator <<(const std::wstring& data);
342
346 Packet& operator <<(const String& data);
347
348protected:
349
350 friend class TcpSocket;
351 friend class UdpSocket;
352
371 virtual const void* onSend(std::size_t& size);
372
390 virtual void onReceive(const void* data, std::size_t size);
391
392private:
393
398 bool operator ==(const Packet& right) const;
399 bool operator !=(const Packet& right) const;
400
411 bool checkSize(std::size_t size);
412
414 // Member data
416 std::vector<char> m_data;
417 std::size_t m_readPos;
418 std::size_t m_sendPos;
419 bool m_isValid;
420};
421
422} // namespace sf
423
424
425#endif // SFML_PACKET_HPP
426
427
Export.hpp
SFML_NETWORK_API
#define SFML_NETWORK_API
Definition Network/Export.hpp:43
sf::Packet::getDataSize
std::size_t getDataSize() const
Get the size of the data contained in the packet.
sf::Packet::clear
void clear()
Clear the packet.
sf::Packet::getReadPosition
std::size_t getReadPosition() const
Get the current reading position in the packet.
sf::Packet::endOfPacket
bool endOfPacket() const
Tell if the reading position has reached the end of the packet.
sf::Packet::Packet
Packet()
Default constructor.
sf::Packet::append
void append(const void *data, std::size_t sizeInBytes)
Append data to the end of the packet.
sf::Packet::getData
const void * getData() const
Get a pointer to the data contained in the packet.
sf::Packet::TcpSocket
friend class TcpSocket
Definition Packet.hpp:350
sf::Packet::onReceive
virtual void onReceive(const void *data, std::size_t size)
Called after the packet is received over the network.
sf::Packet::~Packet
virtual ~Packet()
Virtual destructor.
sf::Packet::UdpSocket
friend class UdpSocket
Definition Packet.hpp:351
sf::Packet::onSend
virtual const void * onSend(std::size_t &size)
Called before the packet is sent over the network.
sf::String
Utility string class that automatically handles conversions between types and encodings.
Definition String.hpp:46
sf::TcpSocket
Specialized socket using the TCP protocol.
Definition TcpSocket.hpp:47
sf::UdpSocket
Specialized socket using the UDP protocol.
Definition UdpSocket.hpp:46
sf
Definition AlResource.hpp:35
sf::Int64
signed long long Int64
Definition Config.hpp:238
sf::Uint16
unsigned short Uint16
Definition Config.hpp:223
sf::Int16
signed short Int16
Definition Config.hpp:222
sf::Uint8
unsigned char Uint8
Definition Config.hpp:219
sf::Int8
signed char Int8
Definition Config.hpp:218
sf::Uint32
unsigned int Uint32
Definition Config.hpp:227
sf::Int32
signed int Int32
Definition Config.hpp:226
sf::Uint64
unsigned long long Uint64
Definition Config.hpp:239