Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
Loading...
Searching...
No Matches
Packet.cpp
Go to the documentation of this file.
1
9#include "RType/Assert.hpp"
10#include "RType/Logger.hpp"
12#include <bit>
13#include <cstring>
14#include <iomanip>
15
16using BufferSequence = std::array<asio::const_buffer, 2>;
17
18namespace rtp::net
19{
21 : header{}, body{}, _readPos(0)
22 {
23 header.opCode = op;
26 header.bodySize = 0;
27 header.ackId = 0;
28 header.reserved = 0;
29 }
30
32 {
33 _readPos = 0;
34 }
35
37 {
39
42 _cacheHeader.bodySize = to_network(static_cast<uint32_t>(body.size()));
45
46 return {
47 asio::const_buffer(&_cacheHeader, sizeof(Header)),
48 asio::const_buffer(body.data(), body.size())
49 };
50 }
51}
Assertion and verification macros for runtime checks.
Logger declaration with support for multiple log levels.
std::array< asio::const_buffer, 2 > BufferSequence
File : Packet.cpp License: MIT Author : Elias Josué HAJJAR LLAUQUEN elias-josue.hajjar-llauquen@epite...
Definition Packet.cpp:16
Network packet implementation for R-Type protocol.
static T to_network(T v)
Converts a primitive type (integer, float) from machine endianness to Big-Endian (network).
Definition Packet.hpp:505
size_t _readPos
Current read position in body.
Definition Packet.hpp:589
void resetRead(void)
Reset read position to beginning of body.
Definition Packet.cpp:31
Header _cacheHeader
Cached header with network endianness.
Definition Packet.hpp:591
BufferSequence getBufferSequence(void) const
Get buffer sequence for network transmission.
Definition Packet.cpp:36
std::vector< uint8_t > body
Packet body/payload.
Definition Packet.hpp:474
Packet()=default
Default constructor.
Header header
Packet header.
Definition Packet.hpp:473
File : IEventPublisher.hpp License: MIT Author : Elias Josué HAJJAR LLAUQUEN elias-josue....
constexpr uint16_t MAGIC_NUMBER
Magic number for packet validation.
Definition Packet.hpp:52
OpCode
Operation codes for different packet types.
Definition Packet.hpp:78
std::array< asio::const_buffer, 2 > BufferSequence
@using BufferSequence
Definition Packet.hpp:454
Packet header with sequencing and acknowledgment support.
Definition Packet.hpp:130
uint16_t ackId
Last acknowledged packet.
Definition Packet.hpp:134
uint16_t magic
Magic number for validation.
Definition Packet.hpp:131
uint16_t sequenceId
Packet sequence number.
Definition Packet.hpp:132
uint8_t reserved
Reserved for future use.
Definition Packet.hpp:136
uint32_t sessionId
Session identifier.
Definition Packet.hpp:137
uint32_t bodySize
Size of the packet body.
Definition Packet.hpp:133
OpCode opCode
Operation code.
Definition Packet.hpp:135