D++ (DPP)  10.0.30
C++ Discord API Bot Library
when_any.h File Reference
#include "coro.h"
#include "job.h"
#include <atomic>
#include <array>
#include <memory>
#include <limits>
#include <optional>
Include dependency graph for when_any.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  dpp::detail::when_any::arg_helper_s< T >
 Type trait helper to obtain the actual type that will be used by a when_any when a type is passed as a parameter. More...
 
struct  dpp::detail::when_any::arg_helper_s< dpp::event_router_t< T > >
 
class  dpp::detail::event_router::awaitable< T >
 Awaitable object representing an event. More...
 
struct  dpp::when_any< Args >::awaiter
 Object returned by operator co_await(). More...
 
struct  dpp::detail::when_any::empty
 Empty result from void-returning awaitable. More...
 
class  dpp::event_router_t< T >
 Handles routing of an event to multiple listeners. More...
 
class  dpp::when_any< Args >::result
 Object returned by operator co_await() on resumption. More...
 
class  dpp::when_any< Args >
 Experimental class to co_await on a bunch of awaitable objects, resuming when the first one completes. On completion, returns a result object that contains the index of the awaitable that finished first. A user can call result::index() and result::get<N>() on the result object to get the result, similar to std::variant. More...
 

Namespaces

 dpp
 The main namespace for D++ functions.
 
 dpp::detail
 Implementation details for internal use only.
 
 dpp::detail::event_router
 Internal cogwheels for dpp::event_router_t.
 
 dpp::detail::when_any
 Internal cogwheels for dpp::when_any.
 

Typedefs

template<typename T >
using dpp::detail::when_any::arg_helper = arg_helper_s< std::remove_cvref_t< T > >
 Helper struct with a method to convert an awaitable parameter to the actual value it will be stored as. More...
 
template<typename T >
using dpp::detail::when_any::awaitable_type = typename arg_helper_s< T >::type
 Alias for the actual type that an awaitable will be stored as in a when_any. More...
 
template<typename T >
using dpp::detail::when_any::storage_type = std::conditional_t< std::is_void_v< T >, empty, T >
 Actual type a result will be stores as in when_any. More...
 

Enumerations

enum  dpp::detail::when_any::await_state {
  dpp::detail::when_any::await_state::started,
  dpp::detail::when_any::await_state::waiting,
  dpp::detail::when_any::await_state::done,
  dpp::detail::when_any::await_state::dangling
}
 Current state of a when_any object. More...
 

Functions

template<typename... Args>
 dpp::when_any (Args...) -> when_any< detail::when_any::awaitable_type< Args >... >
 

Variables

template<typename T >
concept dpp::detail::when_any::void_result = std::same_as<T, empty>
 Concept satisfied if a stored result is void. More...