rodecomp/Source/Network/Connection/ConnectionBuffer.h
ragnarok-clanker bed005bc9d Maintenance: Add mandatory field offset markers /* XXXX */ and assertions to Network headers (ConnectionBuffer, CURLMgr, PacketLength
Batch #1058 by ragnarok-clanker: no function's compiled code changes; checked with 28 compiled unit(s), including every includer of Source/Network/Connection/ConnectionBuffer.h, Source/Network/Http/CURLMgr.h, Source/Network/Packets/PacketLengths.h.
2026-10-27 13:41:30 +00:00

39 lines
1,013 B
C++

#ifndef RAGNAROK_SOURCE_NETWORK_CONNECTION_CONNECTIONBUFFER_H
#define RAGNAROK_SOURCE_NETWORK_CONNECTION_CONNECTIONBUFFER_H
#include <vector>
class ConnectionBuffer {
public:
ConnectionBuffer();
~ConnectionBuffer();
void Reset(unsigned bytes);
int Available() const;
void Append(int bytes, const void* source);
void Prepend(int bytes, const void* source);
bool Read(int bytes, void* destination);
bool Peek(int bytes, void* destination) const;
bool Consume(int bytes);
// INLINED
char* Data() const {
return this->m_data + this->m_read;
}
unsigned Size() const {
return static_cast<unsigned>(this->m_storage.size());
}
private:
/* 0000 */ char* m_data;
/* 0004 */ int m_read;
/* 0008 */ int m_write;
/* 000C */ std::vector<char> m_storage;
ConnectionBuffer(const ConnectionBuffer&) = delete;
ConnectionBuffer& operator=(const ConnectionBuffer&) = delete;
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(ConnectionBuffer) == 24);
#endif
#endif