#ifndef NNTPCHAN_LINE_HPP #define NNTPCHAN_LINE_HPP #include "server.hpp" #include namespace nntpchan { /** @brief a buffered line reader */ class LineReader { public: LineReader(size_t lineLimit); /** @brief queue inbound data from connection */ void Data(const char * data, ssize_t s); /** implements IConnHandler */ virtual bool ShouldClose(); protected: /** @brief handle a line from the client */ virtual void HandleLine(const std::string & line) = 0; private: void OnLine(const char * d, const size_t l); std::string m_leftovers; bool m_close; const size_t lineLimit; }; } #endif