// -*- mode: c++; c-basic-offset: 2; -*- #ifndef BUFFER_HH #define BUFFER_HH #include 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); void clear(); protected: Buffer() {} Buffer(Buffer const&) = delete; }; #endif // BUFFER_HH