Go to the documentation of this file.
15 #ifndef GRPC_CORE_LIB_PROMISE_IF_H
16 #define GRPC_CORE_LIB_PROMISE_IF_H
20 #include <type_traits>
22 #include "absl/status/statusor.h"
23 #include "absl/types/variant.h"
31 namespace promise_detail {
33 template <
typename CallPoll,
typename T,
typename F>
35 T* if_true, F* if_false) {
37 auto promise = if_true->Once();
38 return call_poll(promise);
40 auto promise = if_false->Once();
41 return call_poll(promise);
45 template <
typename CallPoll,
typename T,
typename F>
46 typename CallPoll::PollResult
ChooseIf(CallPoll call_poll,
50 return typename CallPoll::PollResult(
result.status());
52 auto promise = if_true->Once();
53 return call_poll(promise);
55 auto promise = if_false->Once();
56 return call_poll(promise);
60 template <
typename C,
typename T,
typename F>
72 If(C condition,
T if_true, F if_false)
90 template <
bool kSetState>
99 "shouldn't need to set state coming through the initial branch");
101 if (
auto* p = absl::get_if<kPollReadyIdx>(&
r)) {
108 template <
class Promise>
111 if (kSetState && absl::holds_alternative<Pending>(
r)) {
112 self->state_.template emplace<Promise>(
std::move(promise));
126 template <
typename C,
typename T,
typename F>
134 #endif // GRPC_CORE_LIB_PROMISE_IF_H
CallPoll::PollResult ChooseIf(CallPoll call_poll, bool result, T *if_true, F *if_false)
PromiseLike< C > ConditionPromise
typename FalseFactory::Promise FalsePromise
#define T(upbtypeconst, upbtype, ctype, default_value)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
typename TrueFactory::Promise TruePromise
Poll< Result > operator()()
promise_detail::PromiseFactory< void, T > TrueFactory
promise_detail::PromiseFactory< void, F > FalseFactory
decltype(PromiseFactoryImpl(std::move(f_))) Promise
typename PollTraits< decltype(std::declval< TruePromise >()())>::Type Result
std::function< Poll< T >()> Promise
ConditionPromise condition
decltype(PromiseFactoryImpl(std::move(f_), std::declval< void >())) Promise
promise_detail::If< C, T, F > If(C condition, T if_true, F if_false)
PollResult operator()(Promise &promise) const
PollResult operator()(Evaluating &evaluating) const
variant_internal::VisitResult< Visitor, Variants... > visit(Visitor &&vis, Variants &&... vars)
If(C condition, T if_true, F if_false)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:14