R-Type 0.1
Loading...
Searching...
No Matches
PacketReader.hpp
1#pragma once
2
8#include <cstddef>
9#include <cstdint>
10#include <vector>
11
16public:
22 PacketReader(const std::uint8_t *data, std::size_t size);
23
28 PacketReader(const std::vector<uint8_t> &data);
29
35 bool readUInt8(std::uint8_t &value);
36
42 bool readUInt16(std::uint16_t &value);
43
49 bool readUInt32(std::uint32_t &value);
50
57 bool readBytes(std::uint8_t *destination, std::size_t size);
58
63 std::size_t getOffset() const;
64
69 std::size_t getRemaining() const;
70
75 bool isEnd() const;
76
80 void reset();
81
82private:
83 bool canRead(std::size_t size) const;
84
85 const std::uint8_t *_data;
86 std::size_t _size;
87 std::size_t _offset;
88};
89
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
std::size_t getRemaining() const
Returns the number of bytes left to read.
Definition PacketReader.cpp:67
bool isEnd() const
Tells whether every byte has been read.
Definition PacketReader.cpp:73
std::size_t getOffset() const
Returns the number of bytes already read.
Definition PacketReader.cpp:65
PacketReader(const std::uint8_t *data, std::size_t size)
Creates a reader over a raw buffer that it does not own.
Definition PacketReader.cpp:6
void reset()
Moves the read offset back to the first byte.
Definition PacketReader.cpp:75
bool readUInt32(std::uint32_t &value)
Reads a big-endian 32-bit unsigned integer.
Definition PacketReader.cpp:37
bool readUInt8(std::uint8_t &value)
Reads one byte.
Definition PacketReader.cpp:18
bool readUInt16(std::uint16_t &value)
Reads a big-endian 16-bit unsigned integer.
Definition PacketReader.cpp:27