19class SingleConsumerEvent
final {
21 struct NoAutoReset
final {};
29 SingleConsumerEvent(
const SingleConsumerEvent&) =
delete;
30 SingleConsumerEvent(SingleConsumerEvent&&) =
delete;
31 SingleConsumerEvent& operator=(
const SingleConsumerEvent&) =
delete;
32 SingleConsumerEvent& operator=(SingleConsumerEvent&&) =
delete;
33 ~SingleConsumerEvent();
50 template <
typename Clock,
typename Duration>
51 [[nodiscard]]
bool WaitForEventFor(std::chrono::duration<Clock, Duration>);
54 template <
typename Clock,
typename Duration>
55 [[nodiscard]]
bool WaitForEventUntil(std::chrono::time_point<Clock, Duration>);
58 [[nodiscard]]
bool WaitForEventUntil(Deadline);
81 template <
typename Predicate>
82 [[nodiscard]]
bool WaitUntil(Deadline, Predicate stop_waiting);
86 void Reset()
noexcept;
99 [[nodiscard]]
bool IsReady()
const noexcept;
102 class EventWaitStrategy;
104 bool GetIsSignaled()
noexcept;
106 void CheckIsAutoResetForWaitPredicate();
108 impl::FastPimplWaitListLight waiters_;
109 const bool is_auto_reset_{
true};