void AsyncConnection::HandleConnect(const MessagePtr msg, const boost::system::error_code& e) { if (!e) { m_app->HandleConnect(Connection::shared_from_this()); Start(); async_send(boost::asio::buffer(msg->Data(), msg->Length()), m_strand.wrap(boost::bind(&AsyncConnection::HandleSend, this, msg, boost::asio::placeholders::error, false))); } }
void AsyncConnection::Send(const MessagePtr msg) { if (is_open()) { async_send(boost::asio::buffer(msg->Data(), msg->Length()), m_strand.wrap(boost::bind(&AsyncConnection::HandleSend, this, msg, boost::asio::placeholders::error, true))); } else { boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string(m_ip), m_port); async_connect(endpoint, m_strand.wrap(boost::bind(&AsyncConnection::HandleConnect, this, msg, boost::asio::placeholders::error))); } }