22 #ifndef NDN_TRANSPORT_DETAIL_STREAM_TRANSPORT_WITH_RESOLVER_IMPL_HPP 23 #define NDN_TRANSPORT_DETAIL_STREAM_TRANSPORT_WITH_RESOLVER_IMPL_HPP 33 template<
typename BaseTransport,
typename Protocol>
45 connect(
const typename Protocol::resolver::query& query)
55 this->
m_connectTimer.expires_from_now(boost::posix_time::seconds(4));
58 auto resolver = make_shared<typename Protocol::resolver>(ref(this->
m_socket.get_io_service()));
59 resolver->async_resolve(query, bind(&
Impl::resolveHandler, this->shared_from_base(), _1, _2, resolver));
65 typename Protocol::resolver::iterator endpoint,
66 const shared_ptr<typename Protocol::resolver>&)
69 if (error == boost::system::errc::operation_canceled)
72 BOOST_THROW_EXCEPTION(
Transport::Error(error,
"Error during resolution of host or port"));
75 typename Protocol::resolver::iterator end;
76 if (endpoint == end) {
78 BOOST_THROW_EXCEPTION(
Transport::Error(error,
"Unable to resolve host or port"));
88 return static_pointer_cast<
Impl>(this->shared_from_this());
95 #endif // NDN_TRANSPORT_DETAIL_STREAM_TRANSPORT_WITH_RESOLVER_IMPL_HPP
void connectHandler(const boost::system::error_code &error)
void connect(const typename Protocol::resolver::query &query)
Implementation detail of a Boost.Asio-based stream-oriented transport.
StreamTransportWithResolverImpl(BaseTransport &transport, boost::asio::io_service &ioService)
Protocol::socket m_socket
void connectTimeoutHandler(const boost::system::error_code &error)
implementation detail of a Boost.Asio-based stream-oriented transport with resolver support ...
boost::asio::deadline_timer m_connectTimer
BaseTransport & m_transport
void resolveHandler(const boost::system::error_code &error, typename Protocol::resolver::iterator endpoint, const shared_ptr< typename Protocol::resolver > &)