Go to the documentation of this file.
15 #ifndef GRPC_CORE_LIB_PROMISE_OBSERVABLE_H
16 #define GRPC_CORE_LIB_PROMISE_OBSERVABLE_H
24 #include <type_traits>
27 #include "absl/base/thread_annotations.h"
28 #include "absl/types/optional.h"
29 #include "absl/types/variant.h"
39 namespace promise_detail {
55 namespace promise_detail {
69 auto wakeup = waiters_.TakeWakeupSet();
79 auto wakeup = waiters_.TakeWakeupSet();
111 if (!
value_.has_value()) {
142 template <
typename T>
158 template <
typename T>
173 template <
typename T,
typename F>
177 std::declval<T>(), std::declval<WatchCommitter*>()))>;
193 if (
auto* p = absl::get_if<kPollReadyIdx>(&
r)) {
194 if (p->has_value()) {
208 std::shared_ptr<ObservableState<T>>
state_;
215 template <
typename T>
221 template <
typename T>
263 template <
typename T>
284 template <
typename F>
296 #endif // GRPC_CORE_LIB_PROMISE_OBSERVABLE_H
Poll< absl::optional< T > > PollGet(ObservableVersion *version_seen)
promise_detail::ObservableNext< T > Next()
WaitSet waiters_ ABSL_GUARDED_BY(mu_)
ObservableWatch(ObservableWatch &&other) noexcept
Observer(std::shared_ptr< State > state)
static Activity * current()
ObservableState< T > * state_
ObservableVersion * version_seen_
Observer< T > MakeObserver()
Observer & operator=(const Observer &)=delete
Observable & operator=(const Observable &)=delete
typename Promise::Result Result
#define T(upbtypeconst, upbtype, ctype, default_value)
PromiseLike< decltype(std::declval< F >()(std::declval< T >(), std::declval< WatchCommitter * >()))> Promise
Poll< absl::optional< T > > PollNext(ObservableVersion *version_seen)
ObservableNext(ObservableVersion *version_seen, ObservableState< T > *state)
ObservableVersion * version_seen_
promise_detail::ObservableWatch< T, F > Watch(F f)
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION()
ObservableGet(ObservableVersion *version_seen, ObservableState< T > *state)
#define ABSL_EXCLUSIVE_LOCKS_REQUIRED(...)
unsigned __int64 uint64_t
promise_detail::ObservableVersion version_seen_
static constexpr ObservableVersion kTombstoneVersion
ObservableState< T > * state_
absl::optional< Promise > promise_
ObservableWatch(F factory, std::shared_ptr< ObservableState< T >> state)
typename PollTraits< decltype(WrapInPoll(f_()))>::Type Result
void Unlock() ABSL_UNLOCK_FUNCTION()
ObservableState(absl::optional< T > value)
std::shared_ptr< State > state_
bool NextValueReady(ObservableVersion *version_seen) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_)
uint64_t ObservableVersion
Poll< absl::optional< T > > operator()()
promise_detail::ObservableVersion version_seen_
Observer(Observer &&other) noexcept
promise_detail::ObservableGet< T > Get()
std::shared_ptr< State > state_
Poll< absl::optional< T > > operator()()
bool Started() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_)
Observer & operator=(Observer &&other) noexcept
std::shared_ptr< ObservableState< T > > state_
Observer(const Observer &)=delete
ObservableWatch & operator=(const ObservableWatch &)=delete
Poll< absl::optional< T > > PollWatch(ObservableVersion *version_seen)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:45