| Home | Libraries | People | FAQ | More

###### any_connection::async_close (1 of 2 overloads)

Cleanly closes the connection to the server.

###### Synopsis

    template<
        class CompletionToken = with_diagnostics_t<asio::deferred_t>>
    auto
    async_close(
        CompletionToken&& token = {});

###### Description

This function does the following:

- Sends a quit request. This is required by the MySQL protocol, to inform the server that we're closing the connection gracefully.
- If the connection is using TLS (`this->uses_ssl() == true`), performs the TLS shutdown.
- Closes the transport-level connection (the TCP or UNIX socket).

Since this function involves writing a message to the server, it can fail. Only use this function if you know that the connection is healthy and you want to cleanly close it.

If you don't call this function, the destructor or successive connects will perform a transport-layer close. This doesn't cause any resource leaks, but may cause warnings to be written to the server logs.

###### 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.