90 if (
auto val =
m_source.pop_pending()) {
bool await_suspend(std::coroutine_handle<> handle)
Register with the source and suspend, or consume a pending value that arrived in the race window and ...
bool await_ready()
Returns true if a pending value is already available.
BroadcastAwaiter(Vruta::BroadcastSource< T > &source)
bool filter_matches(const void *) const override
BroadcastAwaiter has no filter semantics.
~BroadcastAwaiter() override
T await_resume()
Return the delivered value on resume.
BroadcastAwaiter(const BroadcastAwaiter &)=delete
BroadcastAwaiter(BroadcastAwaiter &&) noexcept=default
void try_resume(const void *) override
Satisfies EventAwaiter interface.
Vruta::BroadcastSource< T > & m_source
BroadcastAwaiter & operator=(const BroadcastAwaiter &)=delete
void deliver(const T &value)
Called by BroadcastSource::signal() from any thread.
Awaiter for suspending a coroutine until a BroadcastSource<T> fires.
std::coroutine_handle m_handle
Abstract base for all event-driven awaiters.
Awaitable single-value broadcast channel for cross-thread signal delivery.