MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
NetworkEvents.cpp
Go to the documentation of this file.
1#include "NetworkEvents.hpp"
2
5
7
8namespace MayaFlux::Kriya {
9
11 std::shared_ptr<Vruta::NetworkSource> source,
12 std::function<void(const Core::NetworkMessage&)> callback)
13{
14 auto& promise = co_await GetEventPromise { source };
15
16 while (true) {
17 if (promise.should_terminate) {
18 break;
19 }
20
21 auto msg = co_await source->next_message();
22 callback(msg);
23 }
24}
25
27 std::shared_ptr<Vruta::NetworkSource> source,
28 std::string sender_address,
29 std::function<void(const Core::NetworkMessage&)> callback)
30{
31 auto& promise = co_await GetEventPromise { source };
32
33 while (true) {
34 if (promise.should_terminate) {
35 break;
36 }
37
38 auto msg = co_await source->next_message();
39
40 if (msg.sender_address == sender_address) {
41 callback(msg);
42 }
43 }
44}
45
47 std::shared_ptr<Vruta::NetworkSource> source,
48 std::function<bool(const Core::NetworkMessage&)> predicate,
49 std::function<void(const Core::NetworkMessage&)> callback)
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}
65
66} // namespace MayaFlux::Kriya
Coroutine type for event-driven suspension.
Definition Event.hpp:26
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.
Vruta::Event on_message_from(std::shared_ptr< Vruta::NetworkSource > source, std::string sender_address, std::function< void(const Core::NetworkMessage &)> callback)
Creates an Event coroutine that fires only for messages from a specific sender.
Vruta::Event on_message(std::shared_ptr< Vruta::NetworkSource > source, std::function< void(const Core::NetworkMessage &)> callback)
Creates an Event coroutine that fires on every message received by a source.
A received datagram or framed message with sender metadata.
Event-domain promise accessor with optional NetworkSource ownership transfer.