diff options
Diffstat (limited to 'src/buffer.hh')
| -rw-r--r-- | src/buffer.hh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/buffer.hh b/src/buffer.hh new file mode 100644 index 0000000..92a7566 --- /dev/null +++ b/src/buffer.hh @@ -0,0 +1,30 @@ +// -*- mode: c++; c-basic-offset: 2; -*- + +#ifndef BUFFER_HH +#define BUFFER_HH + +#include <cstddef> + +class Buffer { +public: + virtual ~Buffer() {} + + static Buffer* create(size_t capacity, size_t min_avail); + + bool empty() const; + + virtual void const* read_ptr(size_t* avail) const = 0; + virtual void consume(size_t bytes) = 0; + + virtual void* write_ptr(size_t* avail) = 0; + virtual void commit(size_t bytes) = 0; + + size_t read(void* data, size_t max); + void write(void const* data, size_t size); + +protected: + Buffer() {} + Buffer(Buffer const&) = delete; +}; + +#endif // BUFFER_HH |
