Pendable wrappers and helpers.
Typedefs | |
| template<typename T = ReadyType> | |
| using | pw::async2::OneshotCallbackTask = internal::CallbackTask< T, false > |
| template<typename T = ReadyType> | |
| using | pw::async2::RecurringCallbackTask = internal::CallbackTask< T, true > |
Functions | |
| template<auto kFunc, typename Callback , typename T = typename UnwrapPoll< std::invoke_result_t<decltype(kFunc), Context&>>::Type> | |
| OneshotCallbackTask< T > | pw::async2::OneshotCallbackTaskFor (Callback &&callback) |
| template<auto kMemberFunc, typename Class , typename Callback , typename T = typename UnwrapPoll< std::invoke_result_t<decltype(kMemberFunc), Class&, Context&>>::Type> | |
| OneshotCallbackTask< T > | pw::async2::OneshotCallbackTaskFor (Class &obj, Callback &&callback) |
| template<auto kFunc, typename Callback , typename T = typename UnwrapPoll< std::invoke_result_t<decltype(kFunc), Context&>>::Type> | |
| RecurringCallbackTask< T > | pw::async2::RecurringCallbackTaskFor (Callback &&callback) |
| template<auto kMemberFunc, typename Class , typename Callback , typename T = typename UnwrapPoll< std::invoke_result_t<decltype(kMemberFunc), Class&, Context&>>::Type> | |
| RecurringCallbackTask< T > | pw::async2::RecurringCallbackTaskFor (Class &obj, Callback &&callback) |
| template<typename Callable > | |
| pw::async2::PendFuncAwaitable (Callable) -> PendFuncAwaitable< typename std::invoke_result< Callable, Context & >::type::value_type, typename std::remove_reference< Callable >::type > | |
| template<typename Func > | |
| pw::async2::PendFuncTask (Func &&) -> PendFuncTask< Func > | |
| template<auto MemberFunc, typename Traits = internal::PendableTraits<decltype(MemberFunc)>, typename = std::enable_if_t< Traits::kIsPendable && std::is_member_function_pointer_v<decltype(MemberFunc)>>, typename... Args> | |
| constexpr MemberPendableWrapper< MemberFunc > | pw::async2::PendableFor (typename Traits::Class &obj, Args &&... args) |
| template<auto FreeFunc, typename Traits = internal::PendableTraits<decltype(FreeFunc)>, typename = std::enable_if_t< Traits::kIsPendable && !std::is_member_function_pointer_v<decltype(FreeFunc)>>, typename... Args> | |
| constexpr FreePendableWrapper< FreeFunc > | pw::async2::PendableFor (Args &&... args) |
| template<typename T > | |
| pw::async2::PendableAsTask (T &&) -> PendableAsTask< T > | |
| using pw::async2::OneshotCallbackTask = typedef internal::CallbackTask<T, false> |
A Task which pends a pendable function and invokes a provided callback with its output when it returns Ready.
A OneshotCallbackTask terminates after the underlying pendable returns Ready for the first time. Following this, the pendable will no longer be polled, and the callback function will not be invoked again.
| using pw::async2::RecurringCallbackTask = typedef internal::CallbackTask<T, true> |
A Task which pends a pendable function and invokes a provided callback with its output when it returns Ready.
A RecurringCallbackTask never completes; it reschedules itself after each Ready returned by the underlying pendable. This makes it suitable to interface with pendables which continually return values, such as a data stream.
|
inlineconstexpr |
Wraps a pendable free function in an object which has a single Pend method, allowing it to be used more broadly.
The wrapper stores the arguments used to invoke the target function. As a result, the argument types must be copyable.
The wrapping pendable object can only be used a single time. After its Pend method returns Ready, it will crash if called again.
|
inlineconstexpr |
Wraps a pendable member function in an object which has a single Pend method, allowing it to be used more broadly.
The wrapper stores the arguments used to invoke the target function. As a result, the argument types must be copyable.
The wrapping pendable object can only be used a single time. After its Pend method returns Ready, it will crash if called again.