#ifndef BUFFER_HH #define BUFFER_HH #include "ro_buffer.hh" #include class Buffer : public RoBuffer { public: static std::unique_ptr fixed(size_t size); static std::unique_ptr growing(size_t base_size, size_t max_size); // Acts as /dev/null, ie always empty, can write anything to it. static std::unique_ptr null(); virtual bool full() const = 0; virtual void clear() = 0; virtual char* wbuf(size_t request, size_t& avail) = 0; virtual void wcommit(size_t bytes) = 0; static size_t write(Buffer* buf, void const* data, size_t len); }; #endif // BUFFER_HH