76 explicit Packet(std::size_t reserveSize);
81 void reserve(std::size_t reserveSize);
87 bool write(std::size_t pos,
void const* data, std::size_t size);
88 bool pack(std::size_t pos,
void const* data, std::size_t size);
93 bool read(std::size_t pos,
void* buff, std::size_t size)
const;
94 bool unpack(std::size_t pos,
void* buff, std::size_t size)
const;
97 bool erase(std::size_t pos, std::size_t size);
100 void setReadPos(std::size_t pos)
const;
101 [[nodiscard]] std::size_t getReadPos()
const;
102 [[nodiscard]]
bool isExtractable(std::size_t size)
const;
104 [[nodiscard]] uint8_t
const* getData(std::size_t pos)
const;
105 [[nodiscard]] uint8_t* getData(std::size_t pos);
106 [[nodiscard]] uint8_t
const* getData()
const;
107 [[nodiscard]] uint8_t* getData();
109 [[nodiscard]] std::size_t getDataSize()
const;
110 [[nodiscard]] uint32_t getLength()
const;
112 void invalidate()
const;
113 void setValidity(
bool validity)
const;
114 [[nodiscard]]
bool isValid()
const;
115 [[nodiscard]]
explicit operator bool()
const;
116 [[nodiscard]]
bool endReached()
const;
158 template<
class TEnum,
typename = std::enable_if_t<std::is_enum_v<TEnum>>>
161 template<
class TData>
205 template<
class TEnum,
typename = std::enable_if_t<std::is_enum_v<TEnum>>>
208 template<
class TData>
209 inline fge::net::Packet const& operator>>(std::unique_ptr<TData>& data)
const;
211 bool operator==(
Packet const& right)
const =
delete;
212 bool operator!=(
Packet const& right)
const =
delete;
214 static std::size_t _defaultReserveSize;
216 virtual void onSend(std::vector<uint8_t>& buffer, std::size_t offset);
217 virtual void onReceive(
void* data, std::size_t size);
223 std::size_t _g_sendPos;
224 std::vector<uint8_t> _g_lastData;
225 bool _g_lastDataValidity;
227 std::vector<uint8_t> _g_data;
228 mutable std::size_t _g_readPos;
229 mutable bool _g_valid;