Go to the documentation of this file.
15 #ifndef GRPC_CORE_LIB_PROMISE_TRY_SEQ_H
16 #define GRPC_CORE_LIB_PROMISE_TRY_SEQ_H
20 #include <type_traits>
23 #include "absl/meta/type_traits.h"
24 #include "absl/status/status.h"
25 #include "absl/status/statusor.h"
33 namespace promise_detail {
35 template <
typename T,
typename Ignored =
void>
39 template <
typename Next>
41 -> decltype(
next->Once(std::forward<T>(
value))) {
42 return next->Once(std::forward<T>(
value));
44 template <
typename F,
typename Elem>
46 -> decltype(f(std::forward<Elem>(
elem), std::forward<T>(
value))) {
47 return f(std::forward<Elem>(
elem), std::forward<T>(
value));
49 template <
typename Result,
typename RunNext>
59 template <
typename Next>
64 template <
typename F,
typename Elem>
69 template <
typename Result,
typename RunNext>
82 std::is_same<decltype(IsStatusOk(std::declval<T>())), bool>::value,
86 template <
typename Next>
90 template <
typename Result,
typename RunNext>
100 template <
typename Next>
102 -> decltype(
next->Once()) {
105 template <
typename Result,
typename RunNext>
113 template <
typename T>
116 template <
typename... Fs>
133 template <
typename... Functors>
146 template <
typename Iter,
typename Factory,
typename Argument>
157 #endif // GRPC_CORE_LIB_PROMISE_TRY_SEQ_H
static auto CallFactory(Next *next, absl::StatusOr< T > &&status) -> decltype(next->Once(std::move(*status)))
static auto CallFactory(Next *next, absl::Status &&) -> decltype(next->Once())
ABSL_NAMESPACE_BEGIN class ABSL_MUST_USE_RESULT StatusOr
bool IsStatusOk(const absl::Status &status)
typename std::enable_if< B, T >::type enable_if_t
static Poll< Result > CheckResultAndRunNext(T prior, RunNext run_next)
static AllocList * Next(int i, AllocList *prev, LowLevelAlloc::Arena *arena)
#define T(upbtypeconst, upbtype, ctype, default_value)
static auto CallFactory(Next *next, T &&value) -> decltype(next->Once(std::forward< T >(value)))
def Iter(n, format, sep='')
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
static auto CallSeqFactory(F &f, Elem &&elem, T &&value) -> decltype(f(std::forward< Elem >(elem), std::forward< T >(value)))
static Poll< Result > CheckResultAndRunNext(absl::StatusOr< T > prior, RunNext run_next)
TestInstance::Result Result
TrySeqTraitsWithSfinae< T > TrySeqTraits
static Poll< Result > CheckResultAndRunNext(absl::Status prior, RunNext run_next)
promise_detail::BasicSeqIter< promise_detail::TrySeqTraits, Factory, Argument, Iter > TrySeqIter(Iter begin, Iter end, Argument argument, Factory factory)
static auto CallFactory(Next *next, T &&) -> decltype(next->Once())
promise_detail::TrySeq< Functors... > TrySeq(Functors... functors)
ABSL_NAMESPACE_BEGIN class ABSL_MUST_USE_RESULT Status
ABSL_MUST_USE_RESULT bool ok() const
AllocList * next[kMaxLevel]
GRPC_CUSTOM_UTIL_STATUS Status
ABSL_MUST_USE_RESULT bool ok() const
static auto CallSeqFactory(F &f, Elem &&elem, absl::StatusOr< T > value) -> decltype(f(std::forward< Elem >(elem), std::move(*value)))
static Poll< Result > CheckResultAndRunNext(T prior, RunNext run_next)
const Status & status() const &
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:41