#pragma once #include #include #include #include #include #include #include "Logger.h" #include "MtMessage.h" typedef boost::beast::websocket::stream WebsocketStream; class MtConnection : public std::enable_shared_from_this { public: MtConnection(WebsocketStream&& ws); ~MtConnection(); void Accept(); void Close(); void Send(const std::string& msg); boost::signals2::signal OnConnected; boost::signals2::signal OnConnectionFailed; boost::signals2::signal OnDisconnected; boost::signals2::signal OnMessageReceived; private: void OnAccept(boost::beast::error_code ec); void DoRead(); void OnRead( boost::beast::error_code ec, std::size_t bytes_transferred); void DoWrite(); void OnWrite( boost::beast::error_code ec, std::size_t bytes_transferred); Logger log_{ "MtConnection" }; WebsocketStream ws_; boost::asio::ip::tcp::resolver resolver_; std::string host_; std::string read_text_; boost::beast::flat_buffer read_buffer_; //std::string send_text_; std::queue send_queue_; };