// -*- mode: c++; c-basic-offset: 2; -*- #ifndef PROTOCOLS_HH #define PROTOCOLS_HH #include #include #include class AttributedText; class Looper; class Protocols { public: class Listener { public: virtual ~Listener() {} virtual void text(Protocols* protocols, size_t id, std::string const& protocol, std::unique_ptr&& text) = 0; virtual void content(Protocols* protocols, size_t id, std::string const& protocol, std::ostream* out) = 0; protected: Listener() {} }; virtual ~Protocols() {} static Protocols* create(size_t workers, size_t buffer, size_t cache, Looper* looper, Listener* listener); virtual void clear() = 0; virtual void add(size_t id, void const* data, size_t size) = 0; virtual void update(size_t id, void const* data, size_t size) = 0; virtual void remove(size_t id) = 0; virtual void text(size_t id) = 0; virtual void free(size_t id, std::unique_ptr&& text) = 0; virtual void content(size_t id, std::ostream* out) = 0; protected: Protocols() {} Protocols(Protocols const&) = delete; Protocols& operator=(Protocols const&) = delete; }; #endif // PROTOCOLS_HH