MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
NetworkAwaiter.cpp
Go to the documentation of this file.
1#include "NetworkAwaiter.hpp"
2
3namespace MayaFlux::Kriya {
4
11
13{
14 auto msg = m_source.pop_message();
15 if (msg) {
16 m_result = std::move(*msg);
17 return true;
18 }
19 return false;
20}
21
22void NetworkAwaiter::await_suspend(std::coroutine_handle<> handle)
23{
24 m_handle = handle;
25 m_is_suspended = true;
27
28 if (auto msg = m_source.pop_message()) {
30 m_result = std::move(*msg);
31 m_is_suspended = false;
32 m_handle.resume();
33 }
34}
35
41
43{
44 m_result = message;
45 m_is_suspended = false;
46 m_handle.resume();
47}
48
49} // namespace MayaFlux::Kriya
Vruta::NetworkSource & m_source
Core::NetworkMessage await_resume()
Return the received message on resume.
void deliver(const Core::NetworkMessage &message)
Called by NetworkSource::signal() with the incoming message.
bool await_ready()
Check if a message is already queued.
void await_suspend(std::coroutine_handle<> handle)
Suspend the coroutine and register with the source.
void register_waiter(Kriya::NetworkAwaiter *awaiter)
void unregister_waiter(Kriya::NetworkAwaiter *awaiter)
std::optional< Core::NetworkMessage > pop_message()
A received datagram or framed message with sender metadata.