MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ on_message_matching()

MAYAFLUX_API Vruta::Event MayaFlux::Kriya::on_message_matching ( std::shared_ptr< Vruta::NetworkSource source,
std::function< bool(const Core::NetworkMessage &)>  predicate,
std::function< void(const Core::NetworkMessage &)>  callback 
)

Creates an Event coroutine that fires only when a predicate matches.

Parameters
sourceShared ownership of the NetworkSource
predicateReturns true for messages that should trigger the callback
callbackInvoked with each matching message
Returns
Event coroutine suitable for EventManager::add_event()
[](const Core::NetworkMessage& m) { return m.data.size() == 4; },
[](const Core::NetworkMessage& msg) { });
Vruta::Event on_message_matching(std::shared_ptr< Vruta::NetworkSource > source, std::function< bool(const Core::NetworkMessage &)> predicate, std::function< void(const Core::NetworkMessage &)> callback)
Creates an Event coroutine that fires only when a predicate matches.
A received datagram or framed message with sender metadata.

Definition at line 46 of file NetworkEvents.cpp.

50{
51 auto& promise = co_await GetEventPromise { source };
52
53 while (true) {
54 if (promise.should_terminate) {
55 break;
56 }
57
58 auto msg = co_await source->next_message();
59
60 if (predicate(msg)) {
61 callback(msg);
62 }
63 }
64}
Event-domain promise accessor with optional NetworkSource ownership transfer.

Referenced by MayaFlux::on_network_message_matching().

+ Here is the caller graph for this function: