Disable old resolver functionality if ASIO_NO_DEPRECATED is defined.
diff --git a/asio/include/asio/basic_socket_streambuf.hpp b/asio/include/asio/basic_socket_streambuf.hpp index d9300a2..b413c19 100644 --- a/asio/include/asio/basic_socket_streambuf.hpp +++ b/asio/include/asio/basic_socket_streambuf.hpp
@@ -46,9 +46,9 @@ // init_buffers(); // this->basic_socket<Protocol, StreamSocketService>::close(ec_); // typedef typename Protocol::resolver resolver_type; -// typedef typename resolver_type::query resolver_query; -// resolver_query query(x1, ..., xn); -// resolve_and_connect(query); +// resolver_type resolver(detail::socket_streambuf_base::io_service_); +// connect_to_endpoints( +// resolver.resolve(x1, ..., xn, ec_)); // return !ec_ ? this : 0; // } // This macro should only persist within this file. @@ -62,9 +62,9 @@ init_buffers(); \ this->basic_socket<Protocol, StreamSocketService>::close(ec_); \ typedef typename Protocol::resolver resolver_type; \ - typedef typename resolver_type::query resolver_query; \ - resolver_query query(ASIO_VARIADIC_BYVAL_ARGS(n)); \ - resolve_and_connect(query); \ + resolver_type resolver(detail::socket_streambuf_base::io_service_); \ + connect_to_endpoints( \ + resolver.resolve(ASIO_VARIADIC_BYVAL_ARGS(n), ec_)); \ return !ec_ ? this : 0; \ } \ /**/ @@ -212,9 +212,8 @@ init_buffers(); this->basic_socket<Protocol, StreamSocketService>::close(ec_); typedef typename Protocol::resolver resolver_type; - typedef typename resolver_type::query resolver_query; - resolver_query query(x...); - resolve_and_connect(query); + resolver_type resolver(detail::socket_streambuf_base::io_service_); + connect_to_endpoints(resolver.resolve(x..., ec_)); return !ec_ ? this : 0; } #else @@ -518,16 +517,13 @@ setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size()); } - template <typename ResolverQuery> - void resolve_and_connect(const ResolverQuery& query) + template <typename EndpointSequence> + void connect_to_endpoints(const EndpointSequence& endpoints) { - typedef typename Protocol::resolver resolver_type; - typedef typename resolver_type::iterator iterator_type; - resolver_type resolver(detail::socket_streambuf_base::io_service_); - iterator_type i = resolver.resolve(query, ec_); if (!ec_) { - iterator_type end; + typename EndpointSequence::iterator i = endpoints.begin(); + typename EndpointSequence::iterator end = endpoints.end(); ec_ = asio::error::host_not_found; while (ec_ && i != end) {
diff --git a/asio/include/asio/connect.hpp b/asio/include/asio/connect.hpp index 6956c36..7d0bab3 100644 --- a/asio/include/asio/connect.hpp +++ b/asio/include/asio/connect.hpp
@@ -128,6 +128,7 @@ typename enable_if<is_endpoint_sequence< EndpointSequence>::value>::type* = 0); +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) Establishes a socket connection by trying each endpoint in a /// sequence. /** @@ -184,6 +185,7 @@ Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin, asio::error_code& ec, typename enable_if<!is_endpoint_sequence<Iterator>::value>::type* = 0); +#endif // !defined(ASIO_NO_DEPRECATED) /// Establishes a socket connection by trying each endpoint in a sequence. /** @@ -379,6 +381,7 @@ typename enable_if<is_endpoint_sequence< EndpointSequence>::value>::type* = 0); +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) Establishes a socket connection by trying each endpoint in a /// sequence. /** @@ -460,6 +463,7 @@ Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin, ConnectCondition connect_condition, asio::error_code& ec, typename enable_if<!is_endpoint_sequence<Iterator>::value>::type* = 0); +#endif // !defined(ASIO_NO_DEPRECATED) /// Establishes a socket connection by trying each endpoint in a sequence. /** @@ -670,6 +674,7 @@ typename enable_if<is_endpoint_sequence< EndpointSequence>::value>::type* = 0); +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) Asynchronously establishes a socket connection by trying each /// endpoint in a sequence. /** @@ -712,6 +717,7 @@ async_connect(basic_socket<Protocol, SocketService>& s, Iterator begin, ASIO_MOVE_ARG(IteratorConnectHandler) handler, typename enable_if<!is_endpoint_sequence<Iterator>::value>::type* = 0); +#endif // !defined(ASIO_NO_DEPRECATED) /// Asynchronously establishes a socket connection by trying each endpoint in a /// sequence. @@ -875,6 +881,7 @@ typename enable_if<is_endpoint_sequence< EndpointSequence>::value>::type* = 0); +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) Asynchronously establishes a socket connection by trying each /// endpoint in a sequence. /** @@ -929,6 +936,7 @@ ConnectCondition connect_condition, ASIO_MOVE_ARG(IteratorConnectHandler) handler, typename enable_if<!is_endpoint_sequence<Iterator>::value>::type* = 0); +#endif // !defined(ASIO_NO_DEPRECATED) /// Asynchronously establishes a socket connection by trying each endpoint in a /// sequence.
diff --git a/asio/include/asio/impl/connect.hpp b/asio/include/asio/impl/connect.hpp index 9ca8be5..471460d 100644 --- a/asio/include/asio/impl/connect.hpp +++ b/asio/include/asio/impl/connect.hpp
@@ -68,6 +68,7 @@ return ec ? typename Protocol::endpoint() : *iter; } +#if !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator> Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin, typename enable_if<!is_endpoint_sequence<Iterator>::value>::type*) @@ -85,6 +86,7 @@ { return connect(s, begin, Iterator(), detail::default_connect_condition(), ec); } +#endif // !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator> Iterator connect(basic_socket<Protocol, SocketService>& s, @@ -130,6 +132,7 @@ return ec ? typename Protocol::endpoint() : *iter; } +#if !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator, typename ConnectCondition> Iterator connect(basic_socket<Protocol, SocketService>& s, @@ -151,6 +154,7 @@ { return connect(s, begin, Iterator(), connect_condition, ec); } +#endif // !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator, typename ConnectCondition> @@ -654,6 +658,7 @@ return init.result.get(); } +#if !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator, typename IteratorConnectHandler> inline ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler, @@ -678,6 +683,7 @@ return init.result.get(); } +#endif // !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator, typename IteratorConnectHandler> @@ -732,6 +738,7 @@ return init.result.get(); } +#if !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator, typename ConnectCondition, typename IteratorConnectHandler> inline ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler, @@ -757,6 +764,7 @@ return init.result.get(); } +#endif // !defined(ASIO_NO_DEPRECATED) template <typename Protocol, typename SocketService, typename Iterator, typename ConnectCondition, typename IteratorConnectHandler>
diff --git a/asio/include/asio/ip/basic_resolver.hpp b/asio/include/asio/ip/basic_resolver.hpp index 7b9f291..68e97e9 100644 --- a/asio/include/asio/ip/basic_resolver.hpp +++ b/asio/include/asio/ip/basic_resolver.hpp
@@ -54,11 +54,13 @@ /// The endpoint type. typedef typename InternetProtocol::endpoint endpoint_type; +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) The query type. typedef basic_resolver_query<InternetProtocol> query; /// (Deprecated.) The iterator type. typedef basic_resolver_iterator<InternetProtocol> iterator; +#endif // !defined(ASIO_NO_DEPRECATED) /// The results type. typedef basic_resolver_results<InternetProtocol> results_type; @@ -86,6 +88,7 @@ return this->get_service().cancel(this->get_implementation()); } +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) Perform forward resolution of a query to a list of entries. /** * This function is used to resolve a query into a list of endpoint entries. @@ -123,6 +126,7 @@ { return this->get_service().resolve(this->get_implementation(), q, ec); } +#endif // !defined(ASIO_NO_DEPRECATED) /// Perform forward resolution of a query to a list of entries. /** @@ -242,7 +246,7 @@ resolver_base::flags resolve_flags) { asio::error_code ec; - query q(host, service, resolve_flags); + basic_resolver_query<protocol_type> q(host, service, resolve_flags); results_type r = this->get_service().resolve( this->get_implementation(), q, ec); asio::detail::throw_error(ec, "resolve"); @@ -289,7 +293,7 @@ results_type resolve(const std::string& host, const std::string& service, resolver_base::flags resolve_flags, asio::error_code& ec) { - query q(host, service, resolve_flags); + basic_resolver_query<protocol_type> q(host, service, resolve_flags); return this->get_service().resolve(this->get_implementation(), q, ec); } @@ -421,7 +425,8 @@ const std::string& service, resolver_base::flags resolve_flags) { asio::error_code ec; - query q(protocol, host, service, resolve_flags); + basic_resolver_query<protocol_type> q( + protocol, host, service, resolve_flags); results_type r = this->get_service().resolve( this->get_implementation(), q, ec); asio::detail::throw_error(ec, "resolve"); @@ -472,10 +477,12 @@ const std::string& service, resolver_base::flags resolve_flags, asio::error_code& ec) { - query q(protocol, host, service, resolve_flags); + basic_resolver_query<protocol_type> q( + protocol, host, service, resolve_flags); return this->get_service().resolve(this->get_implementation(), q, ec); } +#if !defined(ASIO_NO_DEPRECATED) /// (Deprecated.) Asynchronously perform forward resolution of a query to a /// list of entries. /** @@ -513,6 +520,7 @@ return this->get_service().async_resolve(this->get_implementation(), q, ASIO_MOVE_CAST(ResolveHandler)(handler)); } +#endif // !defined(ASIO_NO_DEPRECATED) /// Asynchronously perform forward resolution of a query to a list of entries. /** @@ -624,7 +632,7 @@ ASIO_RESOLVE_HANDLER_CHECK( ResolveHandler, handler, results_type) type_check; - query q(host, service, resolve_flags); + basic_resolver_query<protocol_type> q(host, service, resolve_flags); return this->get_service().async_resolve(this->get_implementation(), q, ASIO_MOVE_CAST(ResolveHandler)(handler)); } @@ -745,7 +753,8 @@ ASIO_RESOLVE_HANDLER_CHECK( ResolveHandler, handler, results_type) type_check; - query q(protocol, host, service, resolve_flags); + basic_resolver_query<protocol_type> q( + protocol, host, service, resolve_flags); return this->get_service().async_resolve(this->get_implementation(), q, ASIO_MOVE_CAST(ResolveHandler)(handler)); }
diff --git a/asio/include/asio/ip/basic_resolver_results.hpp b/asio/include/asio/ip/basic_resolver_results.hpp index 2697b3a..001fad2 100644 --- a/asio/include/asio/ip/basic_resolver_results.hpp +++ b/asio/include/asio/ip/basic_resolver_results.hpp
@@ -48,7 +48,11 @@ */ template <typename InternetProtocol> class basic_resolver_results +#if !defined(ASIO_NO_DEPRECATED) : public basic_resolver_iterator<InternetProtocol> +#else // !defined(ASIO_NO_DEPRECATED) + : private basic_resolver_iterator<InternetProtocol> +#endif // !defined(ASIO_NO_DEPRECATED) { public: /// The protocol type associated with the results.
diff --git a/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp b/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp index 5c0c88c..f189ebc 100644 --- a/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +++ b/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp
@@ -32,7 +32,7 @@ udp::socket s(io_service, udp::endpoint(udp::v4(), 0)); udp::resolver resolver(io_service); - udp::resolver::iterator iterator = + udp::resolver::results_type endpoints = resolver.resolve(udp::v4(), argv[1], argv[2]); using namespace std; // For strlen. @@ -40,7 +40,7 @@ char request[max_length]; std::cin.getline(request, max_length); size_t request_length = strlen(request); - s.send_to(asio::buffer(request, request_length), *iterator); + s.send_to(asio::buffer(request, request_length), *endpoints.begin()); char reply[max_length]; udp::endpoint sender_endpoint;
diff --git a/asio/src/examples/cpp03/icmp/ping.cpp b/asio/src/examples/cpp03/icmp/ping.cpp index 257fc94..fdee664 100644 --- a/asio/src/examples/cpp03/icmp/ping.cpp +++ b/asio/src/examples/cpp03/icmp/ping.cpp
@@ -28,7 +28,7 @@ : resolver_(io_service), socket_(io_service, icmp::v4()), timer_(io_service), sequence_number_(0), num_replies_(0) { - destination_ = *resolver_.resolve(icmp::v4(), destination, ""); + destination_ = *resolver_.resolve(icmp::v4(), destination, "").begin(); start_send(); start_receive();
diff --git a/asio/src/examples/cpp03/porthopper/client.cpp b/asio/src/examples/cpp03/porthopper/client.cpp index 832183f..a5952de 100644 --- a/asio/src/examples/cpp03/porthopper/client.cpp +++ b/asio/src/examples/cpp03/porthopper/client.cpp
@@ -41,7 +41,7 @@ // Determine the location of the server. tcp::resolver resolver(io_service); - tcp::endpoint remote_endpoint = *resolver.resolve(host_name, port); + tcp::endpoint remote_endpoint = *resolver.resolve(host_name, port).begin(); // Establish the control connection to the server. tcp::socket control_socket(io_service);
diff --git a/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp b/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp index 9f9054b..668d3e0 100644 --- a/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +++ b/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp
@@ -92,11 +92,12 @@ } // Called by the user of the client class to initiate the connection process. - // The endpoint iterator will have been obtained using a tcp::resolver. - void start(tcp::resolver::iterator endpoint_iter) + // The endpoints will have been obtained using a tcp::resolver. + void start(tcp::resolver::results_type endpoints) { // Start the connect actor. - start_connect(endpoint_iter); + endpoints_ = endpoints; + start_connect(endpoints_.begin()); // Start the deadline actor. You will note that we're not setting any // particular deadline here. Instead, the connect and input actors will @@ -117,9 +118,9 @@ } private: - void start_connect(tcp::resolver::iterator endpoint_iter) + void start_connect(tcp::resolver::results_type::iterator endpoint_iter) { - if (endpoint_iter != tcp::resolver::iterator()) + if (endpoint_iter != endpoints_.end()) { std::cout << "Trying " << endpoint_iter->endpoint() << "...\n"; @@ -139,7 +140,7 @@ } void handle_connect(const asio::error_code& ec, - tcp::resolver::iterator endpoint_iter) + tcp::resolver::results_type::iterator endpoint_iter) { if (stopped_) return; @@ -273,6 +274,7 @@ private: bool stopped_; + tcp::resolver::results_type endpoints_; tcp::socket socket_; asio::streambuf input_buffer_; deadline_timer deadline_;
diff --git a/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp b/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp index d02c59a..136ca34 100644 --- a/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +++ b/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp
@@ -32,13 +32,14 @@ udp::socket s(io_service, udp::endpoint(udp::v4(), 0)); udp::resolver resolver(io_service); - udp::endpoint endpoint = *resolver.resolve(udp::v4(), argv[1], argv[2]); + udp::resolver::results_type endpoints = + resolver.resolve(udp::v4(), argv[1], argv[2]); std::cout << "Enter message: "; char request[max_length]; std::cin.getline(request, max_length); size_t request_length = std::strlen(request); - s.send_to(asio::buffer(request, request_length), endpoint); + s.send_to(asio::buffer(request, request_length), *endpoints.begin()); char reply[max_length]; udp::endpoint sender_endpoint;
diff --git a/asio/src/tests/performance/client.cpp b/asio/src/tests/performance/client.cpp index 25231ef..13b3a57 100644 --- a/asio/src/tests/performance/client.cpp +++ b/asio/src/tests/performance/client.cpp
@@ -255,7 +255,7 @@ asio::ip::tcp::resolver r(ios); asio::ip::tcp::resolver::results_type endpoints = - r.resolve(asio::ip::tcp::resolver::query(host, port)); + r.resolve(host, port); client c(ios, endpoints, block_size, session_count, timeout);