void message_handler::read_header() { memset(read_msg_.data(), '\0', read_msg_.length()); boost::asio::async_read(socket_, boost::asio::buffer(read_msg_.data(), message::header_size_), [this](boost::system::error_code ec, std::size_t) { if (!ec && read_msg_.decode_header()) { read_body(); } else { std::cout << "Error Reading message body " << ec << std::endl; //TODO Update the remove handler from list at EOF of disconnect ob.update_observer(client_id); } } ); }