Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

any_connection::async_connect (3 of 3 overloads)
PrevUpHomeNext

Establishes a connection to a MySQL server.

Synopsis
template<
    class CompletionToken>
auto
async_connect(
    const connect_params* params,
    diagnostics& diag,
    CompletionToken&& token);
Description

This function performs the following:

  • If a connection has already been established (by a previous call to connect or async_connect), closes it at the transport layer (by closing any underlying socket) and discards any protocol state associated to it. (If you require a clean close, call close or async_close before using this function).
  • If the connection is configured to use TCP (params.server_address.type() == address_type::host_and_port), resolves the passed hostname to a set of endpoints. An empty hostname is equivalent to "localhost".
  • Establishes the physical connection (performing the TCP or UNIX socket connect).
  • Performs the MySQL handshake to establish a session. If the connection is configured to use TLS, the TLS handshake is performed as part of this step.
  • If any of the above steps fail, the TCP or UNIX socket connection is closed.

You can configure some options using the connect_params struct.

The decision to use TLS or not is performed using the following:

  • If the transport is not TCP (params.server_address.type() != address_type::host_and_port), the connection will never use TLS.
  • If the transport is TCP, and params.ssl == ssl_mode::disable, the connection will not use TLS.
  • If the transport is TCP, and params.ssl == ssl_mode::enable, the connection will use TLS only if the server supports it.
  • If the transport is TCP, and params.ssl == ssl_mode::require, the connection will always use TLS. If the server doesn't support it, this function will fail with client_errc::server_doesnt_support_ssl.

If params.connection_collation is within a set of well-known collations, this function sets the current character set, such that current_character_set returns a non-null value. The default collation (utf8mb4_general_ci) is the only one guaranteed to be in the set of well-known collations. This function has the same behavior as the other async_connect overloads, but perform less copies.

Object lifetimes

Zero-copy overload: no copies of the value pointed to by params will be made. It must be kept alive for the duration of the operation, until the final completion handler is called. If you are in doubt, prefer the overloads taking a const connect_params&, which will ensure lifetime correctness for you.

Preconditions

params != nullptr

Handler signature

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


PrevUpHomeNext