55 Packet(Packet&& pck)
noexcept;
56 Packet(Packet& pck) =
default;
57 Packet(Packet
const& pck) =
default;
58 explicit Packet(std::size_t reserveSize);
59 virtual ~Packet() =
default;
63 void reserve(std::size_t reserveSize);
65 Packet& append(std::size_t size);
66 Packet& append(
void const* data, std::size_t size);
67 Packet& pack(
void const* data, std::size_t size);
69 bool write(std::size_t pos,
void const* data, std::size_t size);
70 bool pack(std::size_t pos,
void const* data, std::size_t size);
72 Packet
const& read(
void* buff, std::size_t size)
const;
73 Packet
const& unpack(
void* buff, std::size_t size)
const;
75 bool read(std::size_t pos,
void* buff, std::size_t size)
const;
76 bool unpack(std::size_t pos,
void* buff, std::size_t size)
const;
78 Packet& shrink(std::size_t size);
79 bool erase(std::size_t pos, std::size_t size);
80 Packet
const& skip(std::size_t size)
const;
82 void setReadPos(std::size_t pos)
const;
83 [[nodiscard]] std::size_t getReadPos()
const;
84 [[nodiscard]]
bool isExtractable(std::size_t size)
const;
86 [[nodiscard]] uint8_t
const* getData(std::size_t pos)
const;
87 [[nodiscard]] uint8_t* getData(std::size_t pos);
88 [[nodiscard]] uint8_t
const* getData()
const;
89 [[nodiscard]] uint8_t* getData();
91 [[nodiscard]] std::size_t getDataSize()
const;
92 [[nodiscard]] uint32_t getLength()
const;
94 void invalidate()
const;
95 void setValidity(
bool validity)
const;
96 [[nodiscard]]
bool isValid()
const;
97 [[nodiscard]]
explicit operator bool()
const;
98 [[nodiscard]]
bool endReached()
const;
100 [[nodiscard]] std::vector<uint8_t>
const& getTransmitCache()
const;
101 [[nodiscard]] std::size_t getTransmitPos()
const;
102 [[nodiscard]]
bool isTransmitCacheValid()
const;
103 void invalidateTransmitCache();
105 inline Packet& operator<<(
bool data);
107 inline Packet& operator<<(int8_t data);
108 inline Packet& operator<<(int16_t data);
109 inline Packet& operator<<(int32_t data);
110 inline Packet& operator<<(int64_t data);
112 inline Packet& operator<<(uint8_t data);
113 inline Packet& operator<<(uint16_t data);
114 inline Packet& operator<<(uint32_t data);
115 inline Packet& operator<<(uint64_t data);
117 inline Packet& operator<<(
float data);
118 inline Packet& operator<<(
double data);
119 inline Packet& operator<<(
long double data);
121 Packet& operator<<(std::string_view
const& data);
122 Packet& operator<<(
char const* data);
123 Packet& operator<<(std::string
const& data);
124 Packet& operator<<(tiny_utf8::string
const& data);
125 Packet& operator<<(
wchar_t const* data);
126 Packet& operator<<(std::wstring
const& data);
129 Packet& operator<<(std::forward_list<T>
const& data);
131 Packet& operator<<(std::list<T>
const& data);
133 Packet& operator<<(std::vector<T>
const& data);
136 Packet& operator<<(fge::Vector2<T>
const& data);
138 Packet& operator<<(fge::Vector3<T>
const& data);
143 inline Packet& operator<<(
fge::Color const& data);
145 template<
class TEnum,
typename = std::enable_if_t<std::is_enum_v<TEnum>>>
146 inline Packet& operator<<(TEnum
const& data);
148 template<
class TData>
149 inline Packet& operator<<(std::unique_ptr<TData>
const& data);
153 inline Packet
const& operator>>(
bool& data)
const;
155 inline Packet
const& operator>>(int8_t& data)
const;
156 inline Packet
const& operator>>(int16_t& data)
const;
157 inline Packet
const& operator>>(int32_t& data)
const;
158 inline Packet
const& operator>>(int64_t& data)
const;
160 inline Packet
const& operator>>(uint8_t& data)
const;
161 inline Packet
const& operator>>(uint16_t& data)
const;
162 inline Packet
const& operator>>(uint32_t& data)
const;
163 inline Packet
const& operator>>(uint64_t& data)
const;
165 inline Packet
const& operator>>(
float& data)
const;
166 inline Packet
const& operator>>(
double& data)
const;
167 inline Packet
const& operator>>(
long double& data)
const;
169 Packet
const& operator>>(
char* data)
const;
170 Packet
const& operator>>(std::string& data)
const;
171 Packet
const& operator>>(tiny_utf8::string& data)
const;
172 Packet
const& operator>>(
wchar_t* data)
const;
173 Packet
const& operator>>(std::wstring& data)
const;
176 Packet
const& operator>>(std::forward_list<T>& data)
const;
178 Packet
const& operator>>(std::list<T>& data)
const;
180 Packet
const& operator>>(std::vector<T>& data)
const;
183 Packet
const& operator>>(fge::Vector2<T>& data)
const;
185 Packet
const& operator>>(fge::Vector3<T>& data)
const;
190 inline Packet
const& operator>>(
fge::Color& data)
const;
192 template<
class TEnum,
typename = std::enable_if_t<std::is_enum_v<TEnum>>>
193 inline Packet
const& operator>>(TEnum& data)
const;
195 template<
class TData>
196 inline Packet
const& operator>>(std::unique_ptr<TData>& data)
const;
198 bool operator==(Packet
const& right)
const =
delete;
199 bool operator!=(Packet
const& right)
const =
delete;
201 [[nodiscard]]
virtual bool onSend(std::size_t offset);
202 virtual void onReceive(std::span<uint8_t const>
const& data);
205 friend class SocketTcp;
206 friend class SocketUdp;
208 std::vector<uint8_t> _g_transmitCache;
209 std::size_t _g_transmitPos;
210 bool _g_transmitCacheValid;
213 std::vector<uint8_t> g_data;
214 mutable std::size_t g_readPos;
215 mutable bool g_valid;