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
38 lines
956 B
C++
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
|