55 Packet(Packet&& pck)
noexcept;
56 Packet(Packet
const& pck) =
default;
57 explicit Packet(std::size_t reserveSize);
58 virtual ~Packet() =
default;
60 Packet& operator=(Packet
const& pck) =
default;
61 Packet& operator=(Packet&& pck)
noexcept;
65 void reserve(std::size_t reserveSize);
67 Packet& append(std::size_t size);
68 Packet& append(
void const* data, std::size_t size);
69 Packet& pack(
void const* data, std::size_t size);
71 bool write(std::size_t pos,
void const* data, std::size_t size);
72 bool pack(std::size_t pos,
void const* data, std::size_t size);
74 Packet
const& read(
void* buff, std::size_t size)
const;
75 Packet
const& unpack(
void* buff, std::size_t size)
const;
77 bool read(std::size_t pos,
void* buff, std::size_t size)
const;
78 bool unpack(std::size_t pos,
void* buff, std::size_t size)
const;
80 Packet& shrink(std::size_t size);
81 bool erase(std::size_t pos, std::size_t size);
82 Packet
const& skip(std::size_t size)
const;
84 void setReadPos(std::size_t pos)
const;
85 [[nodiscard]] std::size_t getReadPos()
const;
86 [[nodiscard]]
bool isExtractable(std::size_t size)
const;
88 [[nodiscard]] uint8_t
const* getData(std::size_t pos)
const;
89 [[nodiscard]] uint8_t* getData(std::size_t pos);
90 [[nodiscard]] uint8_t
const* getData()
const;
91 [[nodiscard]] uint8_t* getData();
93 [[nodiscard]] std::size_t getDataSize()
const;
94 [[nodiscard]] uint32_t getLength()
const;
96 void invalidate()
const;
97 void setValidity(
bool validity)
const;
98 [[nodiscard]]
bool isValid()
const;
99 [[nodiscard]]
explicit operator bool()
const;
100 [[nodiscard]]
bool endReached()
const;
102 [[nodiscard]] std::vector<uint8_t>
const& getTransmitCache()
const;
103 [[nodiscard]] std::size_t getTransmitPos()
const;
104 [[nodiscard]]
bool isTransmitCacheValid()
const;
105 void invalidateTransmitCache();
107 inline Packet& operator<<(
bool data);
109 inline Packet& operator<<(int8_t data);
110 inline Packet& operator<<(int16_t data);
111 inline Packet& operator<<(int32_t data);
112 inline Packet& operator<<(int64_t data);
114 inline Packet& operator<<(uint8_t data);
115 inline Packet& operator<<(uint16_t data);
116 inline Packet& operator<<(uint32_t data);
117 inline Packet& operator<<(uint64_t data);
119 inline Packet& operator<<(
float data);
120 inline Packet& operator<<(
double data);
121 inline Packet& operator<<(
long double data);
123 Packet& operator<<(std::string_view
const& data);
124 Packet& operator<<(
char const* data);
125 Packet& operator<<(std::string
const& data);
126 Packet& operator<<(tiny_utf8::string
const& data);
127 Packet& operator<<(
wchar_t const* data);
128 Packet& operator<<(std::wstring
const& data);
131 Packet& operator<<(std::forward_list<T>
const& data);
133 Packet& operator<<(std::list<T>
const& data);
135 Packet& operator<<(std::vector<T>
const& data);
138 Packet& operator<<(fge::Vector2<T>
const& data);
140 Packet& operator<<(fge::Vector3<T>
const& data);
145 inline Packet& operator<<(
fge::Color const& data);
147 template<
class TEnum,
typename = std::enable_if_t<std::is_enum_v<TEnum>>>
148 inline Packet& operator<<(TEnum
const& data);
150 template<
class TData>
151 inline Packet& operator<<(std::unique_ptr<TData>
const& data);
155 inline Packet
const& operator>>(
bool& data)
const;
157 inline Packet
const& operator>>(int8_t& data)
const;
158 inline Packet
const& operator>>(int16_t& data)
const;
159 inline Packet
const& operator>>(int32_t& data)
const;
160 inline Packet
const& operator>>(int64_t& data)
const;
162 inline Packet
const& operator>>(uint8_t& data)
const;
163 inline Packet
const& operator>>(uint16_t& data)
const;
164 inline Packet
const& operator>>(uint32_t& data)
const;
165 inline Packet
const& operator>>(uint64_t& data)
const;
167 inline Packet
const& operator>>(
float& data)
const;
168 inline Packet
const& operator>>(
double& data)
const;
169 inline Packet
const& operator>>(
long double& data)
const;
171 Packet
const& operator>>(
char* data)
const;
172 Packet
const& operator>>(std::string& data)
const;
173 Packet
const& operator>>(tiny_utf8::string& data)
const;
174 Packet
const& operator>>(
wchar_t* data)
const;
175 Packet
const& operator>>(std::wstring& data)
const;
178 Packet
const& operator>>(std::forward_list<T>& data)
const;
180 Packet
const& operator>>(std::list<T>& data)
const;
182 Packet
const& operator>>(std::vector<T>& data)
const;
185 Packet
const& operator>>(fge::Vector2<T>& data)
const;
187 Packet
const& operator>>(fge::Vector3<T>& data)
const;
192 inline Packet
const& operator>>(
fge::Color& data)
const;
194 template<
class TEnum,
typename = std::enable_if_t<std::is_enum_v<TEnum>>>
195 inline Packet
const& operator>>(TEnum& data)
const;
197 template<
class TData>
198 inline Packet
const& operator>>(std::unique_ptr<TData>& data)
const;
200 bool operator==(Packet
const& right)
const =
delete;
201 bool operator!=(Packet
const& right)
const =
delete;
203 [[nodiscard]]
virtual bool onSend(std::size_t offset);
204 virtual void onReceive(std::span<uint8_t const>
const& data);
207 friend class SocketTcp;
208 friend class SocketUdp;
210 std::vector<uint8_t> _g_transmitCache;
211 std::size_t _g_transmitPos;
212 bool _g_transmitCacheValid;
215 std::vector<uint8_t> g_data;
216 mutable std::size_t g_readPos;
217 mutable bool g_valid;