boost::redis::basic_connection::async_exec

Executes commands on the Redis server asynchronously.

Synopsis

template<
    class Response = ignore_t,
    class CompletionToken = asio::default_completion_token_t<executor_type>>
auto
async_exec(
    request const& req,
    Response& resp = ignore,
    CompletionToken&& token = {});

Description

This function sends a request to the Redis server and waits for the responses to each individual command in the request. If the request contains only commands that don't expect a response, the completion occurs after it has been written to the underlying stream. Multiple concurrent calls to this function will be automatically queued by the implementation.

For an example see cpp20_echo_server.cpp.

The completion token must have the following signature:

void f(system::error_code, std::size_t);

Where the second parameter is the size of the response received in bytes.

Per‐operation cancellation

This operation supports per‐operation cancellation. Depending on the state of the request when cancellation is requested, we can encounter two scenarios:

  • If the request hasn't been sent to the server yet, cancellation will prevent it from being sent to the server. In this situation, all cancellation types are supported (`asio::cancellation_type_t::terminal`, `asio::cancellation_type_t::partial` and `asio::cancellation_type_t::total`).

  • If the request has been sent to the server but the response hasn't arrived yet, cancellation will cause `async_exec` to complete immediately. When the response arrives from the server, it will be ignored. In this situation, only `asio::cancellation_type_t::terminal` and `asio::cancellation_type_t::partial` are supported. Cancellation requests specifying `asio::cancellation_type_t::total` only will be ignored.

In any case, connections can be safely used after cancelling async_exec operations.

Object lifetimes

Both req and res should be kept alive until the operation completes. No copies of the request object are made.

Parameters

Name Description

req

The request to be executed.

resp

The response object to parse data into.

token

Completion token.

Created with MrDocs