Aria 2.0.0
C++23 MVVM framework (C++20 minimum) — reactive, coroutine-first, ABI-layered
Loading...
Searching...
No Matches
aria::async::AsyncCommandResult< R > Struct Template Reference

Result of AsyncCommand<R, Args...>::co_execute(...). More...

#include <async_command_result.hpp>

Inheritance diagram for aria::async::AsyncCommandResult< R >:
[legend]

Public Member Functions

 operator bool () const noexcept
R & operator* () &noexcept
 Direct access to the produced value.
const R & operator* () const &noexcept
R && operator* () &&noexcept
const R && operator* () const &&noexcept
R * operator-> () noexcept
const R * operator-> () const noexcept
template<typename U>
value_or (U &&fallback) const &
 Convenience: extract value or fall back.
template<typename U>
value_or (U &&fallback) &&

Static Public Member Functions

static AsyncCommandResult completed_with (R v)
static AsyncCommandResult dropped_ ()
static AsyncCommandResult cancelled_ (::aria::Error e)
static AsyncCommandResult failed_ (::aria::Error e)

Public Attributes

std::optional< R > value {}

Detailed Description

template<typename R>
struct aria::async::AsyncCommandResult< R >

Result of AsyncCommand<R, Args...>::co_execute(...).

Conversion to bool is completed() — the most common consumption pattern (if (r) use(*r);). For richer dispatch use the explicit predicates or inspect .status / .error directly.

value is engaged iff status == Completed. Dereferencing (*r / r->) on a non-Completed result is undefined behaviour; guard with if (r) first. This mirrors the std::optional contract and keeps the happy path zero-overhead.

Member Function Documentation

◆ operator bool()

template<typename R>
aria::async::AsyncCommandResult< R >::operator bool ( ) const
inlineexplicitnodiscardnoexcept

◆ operator*() [1/4]

template<typename R>
R & aria::async::AsyncCommandResult< R >::operator* ( ) &
inlinenodiscardnoexcept

Direct access to the produced value.

Precondition: completed(). Defined only for the four standard ref qualifiers so move-out works naturally:

auto v = std::move(*co_await cmd.co_execute(args)); 

◆ operator*() [2/4]

template<typename R>
const R & aria::async::AsyncCommandResult< R >::operator* ( ) const &
inlinenodiscardnoexcept

◆ operator*() [3/4]

template<typename R>
R && aria::async::AsyncCommandResult< R >::operator* ( ) &&
inlinenodiscardnoexcept

◆ operator*() [4/4]

template<typename R>
const R && aria::async::AsyncCommandResult< R >::operator* ( ) const &&
inlinenodiscardnoexcept

◆ operator->() [1/2]

template<typename R>
R * aria::async::AsyncCommandResult< R >::operator-> ( )
inlinenodiscardnoexcept

◆ operator->() [2/2]

template<typename R>
const R * aria::async::AsyncCommandResult< R >::operator-> ( ) const
inlinenodiscardnoexcept

◆ value_or() [1/2]

template<typename R>
template<typename U>
R aria::async::AsyncCommandResult< R >::value_or ( U && fallback) const &
inlinenodiscard

Convenience: extract value or fall back.

Does NOT throw on non-completed; pair with explicit status checks if you need to distinguish "no value" from "default value".

◆ value_or() [2/2]

template<typename R>
template<typename U>
R aria::async::AsyncCommandResult< R >::value_or ( U && fallback) &&
inlinenodiscard

◆ completed_with()

template<typename R>
AsyncCommandResult aria::async::AsyncCommandResult< R >::completed_with ( R v)
inlinestaticnodiscard

◆ dropped_()

template<typename R>
AsyncCommandResult aria::async::AsyncCommandResult< R >::dropped_ ( )
inlinestaticnodiscard

◆ cancelled_()

template<typename R>
AsyncCommandResult aria::async::AsyncCommandResult< R >::cancelled_ ( ::aria::Error e)
inlinestaticnodiscard

◆ failed_()

template<typename R>
AsyncCommandResult aria::async::AsyncCommandResult< R >::failed_ ( ::aria::Error e)
inlinestaticnodiscard

Member Data Documentation

◆ value

template<typename R>
std::optional<R> aria::async::AsyncCommandResult< R >::value {}

The documentation for this struct was generated from the following file: