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

PrevUpHomeNext

experimental::use_coro_t::executor_with_default::default_completion_token_type

Specify use_coro_t as the default completion token type.

typedef use_coro_t default_completion_token_type;
Types

Name

Description

allocator_type

The allocator type. The allocator is used when constructing the std::promise object for a given asynchronous operation.

as_default_on_t

Type alias to adapt an I/O object to use use_coro_t as its default completion token type.

executor_with_default

Adapts an executor to add the use_coro_t completion token as the default.

Member Functions

Name

Description

as_default_on [static]

Function helper to adapt an I/O object to use use_coro_t as its default completion token type.

get_allocator

Obtain allocator.

rebind

Specify an alternate allocator.

use_coro_t [constructor]

Default constructor.

Constructor used to specify file name, line, and function name.

The use_coro_t class, with its value use_coro, is used to represent an operation that can be awaited by the current resumable coroutine. This completion token may be passed as a handler to an asynchronous operation. For example:

coro<void> my_coroutine(tcp::socket my_socket)
{
  std::size_t n = co_await my_socket.async_read_some(buffer, use_coro);
  ...
}

When used with co_await, the initiating function (async_read_some in the above example) suspends the current coroutine. The coroutine is resumed when the asynchronous operation completes, and the result of the operation is returned.

Note that this token is not the most efficient (use the default completion token boost::asio::deferred for that) but does provide type erasure, as it will always return a coro.

Requirements

Header: boost/asio/experimental/use_coro.hpp

Convenience header: None


PrevUpHomeNext