nxtio/async.hpp file

Namespaces

namespace nxt

Classes

template <typename T>
struct nxt::source_value<signal<T>>
template <typename T>
struct nxt::source_value<channel<T>>
template <typename T, typename Pull>
class nxt::pull_source
template <typename T, typename Pull>
struct nxt::source_value<pull_source<T, Pull>>

Typedefs

template <typename T>
using channel = nxt::detail::event_queue<T>
Buffered async stream of values.
template <typename T>
using source_value_t = typename source_value<std::remove_cvref_t<T>>::type

Functions

template <scoped Scope, typename... Awaitables>
auto all(Scope& s, Awaitables && ... awaitables) →  auto
template <scoped Scope, typename... Awaitables>
auto any(Scope& s, Awaitables && ... awaitables) →  auto
template <scoped Scope>
void cancel(Scope& s)
template <typename T>
auto cancel(channel<T>& ch) →  task<void>
template <typename T>
auto close(channel<T>& ch) →  task<void>
template <typename T>
void close(signal<T>& sig)
template <typename T, typename Pull>
auto make_source(Pull&& pull) →  auto
template <typename T>
auto next(const signal<T>& sig) →  auto
template <typename T>
auto next(const signal<T>& sig, std::stop_token stop) →  auto
template <typename T>
auto next(channel<T>& ch, std::stop_token = {}) →  task<std::optional<T>>
template <typename T, typename Pull>
auto next(pull_source<T, Pull>& src, std::stop_token stop = {}) →  task<std::optional<T>>
template <typename T>
auto publish(const publisher<T>& pub, T value) →  task<void>
template <typename T>
auto publish(const bound_publisher<T>& pub) →  task<void>
template <typename T>
auto publish(channel<T>& ch, T value) →  task<bool>
template <typename T>
auto publisher_for(const signal<T>& sig) →  auto
template <typename T>
auto publisher_for(const signal<T>& sig, T value) →  auto
template <scoped Scope>
auto scheduler_of(Scope& s) →  auto&
template <scoped Scope, typename... Sources>
auto select(Scope& scope, Sources&... sources) →  task<std::variant<std::optional<source_value_t<Sources>>...>>
template <scoped Scope>
void spawn(Scope& s, task<> t)
template <scoped Scope>
auto stop_token(Scope& s) →  auto
template <scoped Scope>
auto subscope(Scope& s) →  auto
template <scoped Scope, typename Context>
auto subscope(Scope& s, Context context) →  auto