|
Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
|
Network packet with header and serializable body. More...
#include <Packet.hpp>
Public Member Functions | |
| Packet ()=default | |
| Default constructor. | |
| Packet (OpCode op) | |
| Construct packet with specific operation code. | |
| void | resetRead (void) |
| Reset read position to beginning of body. | |
| BufferSequence | getBufferSequence (void) const |
| Get buffer sequence for network transmission. | |
| template<typename T > | |
| auto | operator<< (T data) -> Packet & |
| Serialize data into packet body. | |
| template<typename T > | |
| auto | operator<< (const std::vector< T > &vec) -> Packet & |
| Serialize vector into packet body. | |
| auto | operator<< (std::string_view str) -> Packet & |
| Serialize string into packet body. | |
| template<typename T > | |
| auto | operator>> (T &data) -> Packet & |
| Deserialize data from packet body. | |
| template<typename T > | |
| auto | operator>> (std::vector< T > &vec) -> Packet & |
| Deserialize vector from packet body. | |
| auto | operator>> (std::string &str) -> Packet & |
| Deserialize string from packet body. | |
Static Public Member Functions | |
| template<typename T > | |
| static T | to_network (T v) |
| Converts a primitive type (integer, float) from machine endianness to Big-Endian (network). | |
| template<typename T > | |
| static T | from_network (T value) |
| Converts a primitive type (integer, float) from Big-Endian (network) to machine endianness. | |
Public Attributes | |
| Header | header |
| Packet header. | |
| std::vector< uint8_t > | body |
| Packet body/payload. | |
Private Member Functions | |
| void | _bumpBodySizeOrThrow () |
| Increment body size and check for overflow. | |
Private Attributes | |
| size_t | _readPos = 0 |
| Current read position in body. | |
| Header | _cacheHeader |
| Cached header with network endianness. | |
Network packet with header and serializable body.
Provides serialization and deserialization operators for various data types. Supports automatic endianness handling and buffer management.
Definition at line 471 of file Packet.hpp.
|
default |
Default constructor.
|
explicit |
Construct packet with specific operation code.
| op | Operation code for the packet |
Definition at line 20 of file Packet.cpp.
References rtp::net::Header::ackId, rtp::net::Header::bodySize, header, rtp::net::Header::magic, rtp::net::MAGIC_NUMBER, rtp::net::Header::opCode, rtp::net::Header::reserved, and rtp::net::Header::sequenceId.
|
private |
Increment body size and check for overflow.
|
inlinestatic |
Converts a primitive type (integer, float) from Big-Endian (network) to machine endianness.
| value | The value to convert. |
Definition at line 532 of file Packet.hpp.
References to_network().
Referenced by rtp::net::Session::reader(), rtp::client::ClientNetwork::readTcpHeader(), rtp::client::ClientNetwork::readUdp(), and rtp::server::ServerNetwork::receiveUdpPacket().
| BufferSequence rtp::net::Packet::getBufferSequence | ( | void | ) | const |
Get buffer sequence for network transmission.
Definition at line 36 of file Packet.cpp.
References _cacheHeader, rtp::net::Header::ackId, body, rtp::net::Header::bodySize, header, rtp::net::Header::magic, rtp::net::Header::sequenceId, rtp::net::Header::sessionId, and to_network().
Referenced by rtp::client::ClientNetwork::sendPacket(), and rtp::net::Session::writer().
| auto rtp::net::Packet::operator<< | ( | const std::vector< T > & | vec | ) | -> Packet & |
Serialize vector into packet body.
| T | Serializable type |
| vec | Vector to serialize |
| auto rtp::net::Packet::operator<< | ( | std::string_view | str | ) | -> Packet & |
Serialize string into packet body.
| str | String view to serialize |
| auto rtp::net::Packet::operator<< | ( | T | data | ) | -> Packet & |
Serialize data into packet body.
| T | Serializable type |
| data | Data to serialize |
| auto rtp::net::Packet::operator>> | ( | std::string & | str | ) | -> Packet & |
Deserialize string from packet body.
| str | Reference to store deserialized string |
| auto rtp::net::Packet::operator>> | ( | std::vector< T > & | vec | ) | -> Packet & |
Deserialize vector from packet body.
| T | Serializable type |
| vec | Reference to store deserialized vector |
| auto rtp::net::Packet::operator>> | ( | T & | data | ) | -> Packet & |
Deserialize data from packet body.
| T | Serializable type |
| data | Reference to store deserialized data |
| void rtp::net::Packet::resetRead | ( | void | ) |
Reset read position to beginning of body.
Definition at line 31 of file Packet.cpp.
References _readPos.
|
inlinestatic |
Converts a primitive type (integer, float) from machine endianness to Big-Endian (network).
| value | The value to convert. |
Definition at line 505 of file Packet.hpp.
References rtp::net::NATIVE_ENDIAN, and to_network().
Referenced by from_network(), getBufferSequence(), and to_network().
|
mutableprivate |
Cached header with network endianness.
Definition at line 591 of file Packet.hpp.
Referenced by getBufferSequence().
|
private |
Current read position in body.
Definition at line 589 of file Packet.hpp.
Referenced by resetRead().
| std::vector<uint8_t> rtp::net::Packet::body |
Packet body/payload.
Definition at line 474 of file Packet.hpp.
Referenced by getBufferSequence(), rtp::net::Session::reader(), rtp::client::ClientNetwork::readUdp(), and rtp::server::ServerNetwork::receiveUdpPacket().
| Header rtp::net::Packet::header |
Packet header.
Definition at line 473 of file Packet.hpp.
Referenced by Packet(), getBufferSequence(), rtp::client::NetworkSyncSystem::handleEvent(), rtp::server::GameManager::handlePacket(), rtp::net::Session::reader(), rtp::client::ClientNetwork::readTcpHeader(), rtp::client::ClientNetwork::readUdp(), rtp::server::ServerNetwork::receiveUdpPacket(), and rtp::client::ClientNetwork::sendUdpHandshake().