#pragma once #include #include #include class Client { public: typedef std::function OnDoneFT; private: boost::asio::ip::tcp::socket socket; boost::asio::streambuf buffer; OnDoneFT done; Client() = delete; Client(Client const&) = delete; Client(Client&&) = delete; Client& operator=(Client const&) = delete; Client& operator=(Client&&) = delete; protected: virtual void handle_message(std::vector message) = 0; public: Client(boost::asio::ip::tcp::socket&& socket); void handle_receive(boost::system::error_code const& ec, size_t read_bytes); void receive(); void on_done(OnDoneFT f); };