R-Type 0.1
Loading...
Searching...
No Matches
PayloadCodec.hpp
1#pragma once
2
3#include <cstdint>
4#include <type_traits>
5
6#include "protocol/PacketReader.hpp"
7#include "protocol/PacketWriter.hpp"
8
9namespace rtype::protocol {
22template <typename T>
23 requires std::is_trivially_copyable_v<T>
24bool writePayload(PacketWriter &writer, const T &payload) {
25 return writer.writeBytes(reinterpret_cast<const std::uint8_t *>(&payload),
26 sizeof(T));
27}
28
36template <typename T>
37 requires std::is_trivially_copyable_v<T>
38bool readPayload(PacketReader &reader, T &payload) {
39 return reader.readBytes(reinterpret_cast<std::uint8_t *>(&payload),
40 sizeof(T));
41}
42
44} // namespace rtype::protocol
Bounds checked reader of big-endian values over a byte buffer.
Definition PacketReader.hpp:15
bool readBytes(std::uint8_t *destination, std::size_t size)
Copies raw bytes out of the buffer.
Definition PacketReader.cpp:49
Growable buffer of big-endian values, capped at MAX_PAYLOAD_SIZE.
Definition PacketWriter.hpp:16
bool writeBytes(const std::uint8_t *data, std::size_t size)
Appends raw bytes.
Definition PacketWriter.cpp:40
bool readPayload(PacketReader &reader, T &payload)
Reads the raw bytes of a padding free payload struct.
Definition PayloadCodec.hpp:38
bool writePayload(PacketWriter &writer, const T &payload)
Appends the raw bytes of a padding free payload struct.
Definition PayloadCodec.hpp:24