A resolver service must meet the requirements for an I/O
object service, as well as the additional requirements listed below.

In the table below, X denotes
a resolver service class for protocol InternetProtocol,
a denotes a value of type
X, b
denotes a value of type X::implementation_type,
q denotes a value of type
ip::basic_resolver_query<InternetProtocol>,
e denotes a value of type
ip::basic_endpoint<InternetProtocol>,
ec denotes a value of type
error_code, and h denotes a value meeting ResolveHandler requirements.

Table 23. ResolverService requirements

expression

return type

assertion/note pre/post-condition

a.destroy(b);

From IoObjectService
requirements. Implicitly cancels asynchronous resolve operations,
as if by calling a.cancel(b,ec).

a.cancel(b,ec);

error_code

Causes any outstanding asynchronous resolve operations to complete
as soon as possible. Handlers for cancelled operations shall be
passed the error code error::operation_aborted.

a.resolve(b,q,ec);

ip::basic_resolver_iterator<InternetProtocol>

On success, returns an iterator i
such that i!=ip::basic_resolver_iterator<InternetProtocol>().
Otherwise returns ip::basic_resolver_iterator<InternetProtocol>().

a.async_resolve(b,q,h);

Initiates an asynchronous resolve operation that is performed via
the io_service
object a.get_io_service()
and behaves according to asynchronous
operation requirements.

If the operation completes
successfully, the ResolveHandler
object h shall
be invoked with an iterator object i
such that the condition i!=ip::basic_resolver_iterator<InternetProtocol>() holds. Otherwise it is invoked
with ip::basic_resolver_iterator<InternetProtocol>().

a.resolve(b,e,ec);

ip::basic_resolver_iterator<InternetProtocol>

On success, returns an iterator i
such that i!=ip::basic_resolver_iterator<InternetProtocol>().
Otherwise returns ip::basic_resolver_iterator<InternetProtocol>().

a.async_resolve(b,e,h);

Initiates an asynchronous resolve operation that is performed via
the io_service
object a.get_io_service()
and behaves according to asynchronous
operation requirements.

If the operation completes
successfully, the ResolveHandler
object h shall
be invoked with an iterator object i
such that the condition i!=ip::basic_resolver_iterator<InternetProtocol>() holds. Otherwise it is invoked
with ip::basic_resolver_iterator<InternetProtocol>().