9 io_service_ = std::make_shared<boost::asio::io_service>();
10 udp::endpoint local_endpoint = local_endpoint = udp::endpoint(udp::v4(), stoi(port));
13 timer_ = std::make_shared<boost::asio::deadline_timer>(*io_service_.get());
23 udp::endpoint udp_endpoint = udp::endpoint(boost::asio::ip::address::from_string(
address_), 0);
25 port_ = std::to_string(
socket_->local_endpoint().port());
40 boost::system::error_code
error;
41 udp::endpoint sender_endpoint;
42 len =
socket_->receive_from(boost::asio::buffer(buf), sender_endpoint);
43 if (error == boost::asio::error::eof)
53 timer_->expires_from_now(boost::posix_time::seconds(expiry_time));
54 timer_->async_wait([
this, &expiry_time](
const boost::system::error_code&
error) {
56 if (error.message() ==
"Success")
58 std::cout <<
"Time out: No packets received in " << expiry_time <<
" seconds" << std::endl;
62 boost::optional<boost::system::error_code> read_result;
63 udp::endpoint sender_endpoint;
65 socket_->async_receive_from(boost::asio::buffer(buf), sender_endpoint,
66 [&len, &read_result](
const boost::system::error_code& error,
size_t received) {
68 read_result.reset(error);
73 if (read_result && read_result->value() == 0)
virtual bool read(boost::array< uint8_t, 4096 > &buf, size_t &len)
boost::optional< boost::system::error_code > timer_result_
std::shared_ptr< boost::asio::deadline_timer > timer_
virtual bool disconnect()
UDPTransport(std::string address, std::string port="0")
std::shared_ptr< boost::asio::io_service > io_service_
std::unique_ptr< boost::asio::ip::udp::socket > socket_
virtual bool readWithTimeout(boost::array< uint8_t, 4096 > &buf, size_t &len, const uint32_t expiry_time)