9 io_service_ = std::make_shared<boost::asio::io_service>();
10 socket_ = std::make_unique<tcp::socket>(*io_service_);
11 timer_ = std::make_shared<boost::asio::deadline_timer>(*io_service_.get());
25 tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
26 tcp::resolver::iterator end;
28 boost::system::error_code
error = boost::asio::error::host_not_found;
29 while (error && endpoint_iterator != end)
32 socket_->connect(*endpoint_iterator++, error);
36 throw boost::system::system_error(error);
39 catch (std::exception& e)
41 std::cerr << e.what() << std::endl;
57 boost::system::error_code
error;
58 len =
socket_->read_some(boost::asio::buffer(buf), error);
59 if (error == boost::asio::error::eof)
68 timer_->expires_from_now(boost::posix_time::seconds(expiry_time));
69 timer_->async_wait([
this, &expiry_time](
const boost::system::error_code&
error) {
71 if (error.message() ==
"Success")
73 std::cout <<
"Time out: No packets received in " << expiry_time <<
" seconds" << std::endl;
77 boost::optional<boost::system::error_code> read_result;
79 socket_->async_read_some(boost::asio::buffer(buf),
80 [&len, &read_result](
const boost::system::error_code& error,
size_t received) {
82 read_result.reset(error);
87 if (read_result && read_result->value() == 0)
boost::optional< boost::system::error_code > timer_result_
std::shared_ptr< boost::asio::deadline_timer > timer_
virtual bool readWithTimeout(boost::array< uint8_t, 4096 > &buf, size_t &len, const uint32_t expiry_time)
virtual bool read(boost::array< uint8_t, 4096 > &buf, size_t &len)
TCPTransport(std::string address)
std::shared_ptr< boost::asio::io_service > io_service_
virtual bool disconnect()
std::unique_ptr< boost::asio::ip::tcp::socket > socket_