rearranged code in client_network_manager, so it is more readable
This commit is contained in:
		| @@ -17,6 +17,7 @@ namespace chat | ||||
|  | ||||
|     class client_network_manager | ||||
|     { | ||||
|     /* members */ | ||||
|     private: | ||||
|         asio::io_service& _ios; | ||||
|         tcp::socket _socket; | ||||
| @@ -28,19 +29,42 @@ namespace chat | ||||
|         std::string _login; | ||||
|  | ||||
|  | ||||
|     /* interface */ | ||||
|     public: | ||||
|         client_network_manager(asio::io_service& ioservice, | ||||
|                                tcp::resolver::iterator epit, | ||||
|                                std::string login) | ||||
|         : _ios(ioservice), _socket(_ios), _isb(), _osb(), _is(&_isb), _os(&_osb), _login(login) | ||||
|         { connect(epit); } | ||||
|  | ||||
|         void send(chat_message message) | ||||
|         { | ||||
|             _ios.post([this, message] | ||||
|                       { | ||||
|                           asio::async_write(_socket, asio::buffer(message.get()), | ||||
|                                             [](boost::system::error_code, size_t) | ||||
|                                             {}); | ||||
|                       }); | ||||
|         } | ||||
|  | ||||
|  | ||||
|     /* internal methods */ | ||||
|     private: | ||||
|         static void throw_if_error(boost::system::error_code& ec) | ||||
|         { | ||||
|             if (ec) | ||||
|                 throw std::runtime_error("Networking error: " + ec.message()); | ||||
|         } | ||||
|  | ||||
|         std::string receive_message_sync() | ||||
|         void connect(tcp::resolver::iterator epit) | ||||
|         { | ||||
|             std::string data; | ||||
|             asio::read_until(_socket, _isb, byte(message::TERM)); | ||||
|             std::getline(_is, data, byte(message::TERM)); | ||||
|  | ||||
|             return data; | ||||
|             asio::async_connect | ||||
|                     ( | ||||
|                             _socket, epit, | ||||
|                             std::bind(&client_network_manager::handshake, | ||||
|                                       this, std::placeholders::_1, | ||||
|                                       std::placeholders::_2) | ||||
|                     ); | ||||
|         } | ||||
|  | ||||
|         void handshake(boost::system::error_code ec, tcp::resolver::iterator) | ||||
| @@ -62,6 +86,15 @@ namespace chat | ||||
|             receive(); | ||||
|         } | ||||
|  | ||||
|         std::string receive_message_sync() | ||||
|         { | ||||
|             std::string data; | ||||
|             asio::read_until(_socket, _isb, byte(message::TERM)); | ||||
|             std::getline(_is, data, byte(message::TERM)); | ||||
|  | ||||
|             return data; | ||||
|         } | ||||
|  | ||||
|         void receive() | ||||
|         { | ||||
|             asio::async_read_until(_socket, _isb, byte(message::TERM), | ||||
| @@ -86,33 +119,5 @@ namespace chat | ||||
|                                        receive(); | ||||
|                                    }); | ||||
|         } | ||||
|  | ||||
|         void connect(tcp::resolver::iterator epit) | ||||
|         { | ||||
|             asio::async_connect | ||||
|                     ( | ||||
|                             _socket, epit, | ||||
|                             std::bind(&client_network_manager::handshake, | ||||
|                                       this, std::placeholders::_1, | ||||
|                                       std::placeholders::_2) | ||||
|                     ); | ||||
|         } | ||||
|  | ||||
|     public: | ||||
|         client_network_manager(asio::io_service& ioservice, | ||||
|                                tcp::resolver::iterator epit, | ||||
|                                std::string login) | ||||
|         : _ios(ioservice), _socket(_ios), _isb(), _osb(), _is(&_isb), _os(&_osb), _login(login) | ||||
|         { connect(epit); } | ||||
|  | ||||
|         void send(chat_message message) | ||||
|         { | ||||
|             _ios.post([this, message] | ||||
|                       { | ||||
|                           asio::async_write(_socket, asio::buffer(message.get()), | ||||
|                                             [](boost::system::error_code, size_t) | ||||
|                                             {}); | ||||
|                       }); | ||||
|         } | ||||
|     }; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user