...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Establishes a connection by trying each endpoint in a sequence asynchronously.
template< class Iterator, class ConnectCondition, class IteratorConnectHandler = net::default_completion_token_t<executor_type>> DEDUCED async_connect( Iterator begin, Iterator end, ConnectCondition connect_condition, IteratorConnectHandler&& handler = net::default_completion_token_t< executor_type >{});
This function attempts to connect the stream to one of a sequence of
endpoints by trying each endpoint until a connection is successfully
established. The algorithm, known as a composed asynchronous
operation, is implemented in terms of calls to the underlying
socket's async_connect
function. If the timeout timer expires while the operation is outstanding,
the current connection attempt will be canceled and the completion handler
will be invoked with the error error::timeout
.
Name |
Description |
---|---|
|
An iterator pointing to the start of a sequence of endpoints. |
|
An iterator pointing to the end of a sequence of endpoints. |
|
A function object that is called prior to each connection attempt. The signature of the function object must be: bool connect_condition( error_code const& ec, typename Protocol::endpoint const& next); |
|
The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be: void handler( // Result of operation. if the sequence is empty, set to // net::error::not_found. Otherwise, contains the // error from the last connection attempt. error_code const& error, // On success, an iterator denoting the successfully // connected endpoint. Otherwise, the end iterator. Iterator iterator );
Regardless of whether the asynchronous operation completes
immediately or not, the handler will not be invoked from within
this function. Invocation of the handler will be performed
in a manner equivalent to using |