| Home | Libraries | People | FAQ | More

###### connection::async_connect (2 of 2 overloads)

Establishes a connection to a MySQL server.

###### Synopsis

    template<
        typename EndpointType,
        class CompletionToken>
    auto
    async_connect(
        const EndpointType& endpoint,
        const handshake_params& params,
        diagnostics& diag,
        CompletionToken&& token);

###### Description

This function is only available if `Stream` satisfies the `SocketStream` concept.

Connects the underlying stream and performs the handshake with the server. The underlying stream is closed in case of error. Prefer this function to `connection::handshake`.

If using a SSL-capable stream, the SSL handshake will be performed by this function.

`endpoint` should be convertible to `Stream::lowest_layer_type::endpoint_type`.

###### Object lifetimes

The strings pointed to by `params` should be kept alive by the caller until the operation completes, as no copy is made by the library. `endpoint` is copied as required and doesn't need to be kept alive.

###### Handler signature

The handler signature for this operation is `void(boost::mysql::error_code)`.

###### Executor

Intermediate completion handlers, as well as the final handler, are executed using `token`'s associated executor, or `this->get_executor()` if the token doesn't have an associated executor.

If the final handler has an associated immediate executor, and the operation completes immediately, the final handler is dispatched to it. Otherwise, the final handler is called as if it was submitted using `asio::post`, and is never be called inline from within this function.