6#include <userver/engine/deadline.hpp> 
    7#include <userver/engine/future_status.hpp> 
    8#include <userver/engine/impl/context_accessor.hpp> 
    9#include <userver/engine/impl/wait_list_fwd.hpp> 
   10#include <userver/utils/fast_pimpl.hpp> 
   12USERVER_NAMESPACE_BEGIN
 
   45class SingleUseEvent 
final : 
private impl::ContextAccessor {
 
   47  SingleUseEvent() 
noexcept;
 
   49  SingleUseEvent(
const SingleUseEvent&) = 
delete;
 
   50  SingleUseEvent(SingleUseEvent&&) = 
delete;
 
   51  SingleUseEvent& operator=(
const SingleUseEvent&) = 
delete;
 
   52  SingleUseEvent& operator=(SingleUseEvent&&) = 
delete;
 
   76  [[nodiscard]] 
bool IsReady() 
const noexcept override;
 
   80  impl::ContextAccessor* TryGetContextAccessor() 
noexcept { 
return this; }
 
   84  friend class impl::FutureWaitStrategy<SingleUseEvent>;
 
   86  impl::EarlyWakeup TryAppendWaiter(impl::TaskContext& waiter) 
override;
 
   87  void RemoveWaiter(impl::TaskContext& waiter) 
noexcept override;
 
   88  void RethrowErrorResult() 
const override;
 
   89  void AfterWait() 
noexcept override;
 
   91  impl::FastPimplWaitListLight waiters_;