rodecomp/Source/Network/Connection/ConnectionBuffer.h
ragnarok-clanker a47d20f8be Reconstruct readable C++ and organize cohesive source subsystems
Administrative source import: native x86 compilation passed for 423 authored units. Source placement and submission states are migrated separately; this commit does not imply peer acceptance.

Previous head: 35d2a8cb36
Payload SHA256: 592f016d2730c5593bb653aa054c1e5f76a6df72c8f5a09e66f74876e2e33dee
2026-10-25 07:42:41 +00:00

38 lines
956 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);
char* Data() const {
return this->m_data + this->m_read;
}
unsigned Size() const {
return static_cast<unsigned>(this->m_storage.size());
}
private:
char* m_data;
int m_read;
int m_write;
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