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

◆ manage_transient_data()

Vruta::SoundRoutine MayaFlux::Kriya::CycleCoordinator::manage_transient_data ( std::shared_ptr< Buffers::AudioBuffer buffer,
std::function< void(uint32_t)>  on_data_ready,
std::function< void(uint32_t)>  on_data_expired 
)

Create a transient data management routine.

Parameters
bufferAudioBuffer with transient data lifecycle
on_data_readyCallback when data becomes available
on_data_expiredCallback when data expires
Returns
SoundRoutine that manages data lifecycle

Definition at line 56 of file CycleCoordinator.cpp.

60{
61
62 auto& promise = co_await GetAudioPromise {};
63 uint32_t cycle = 0;
64
65 while (true) {
66 if (promise.should_terminate) {
67 break;
68 }
69
70 if (buffer->has_data_for_cycle()) {
71 on_data_ready(cycle);
72 co_await SampleDelay { 1 };
73
74 if (buffer->has_data_for_cycle()) {
75 on_data_expired(cycle + 1);
76 }
77 }
78
79 cycle++;
80 co_await SampleDelay { 1 };
81 }
82}
GetPromiseBase< Vruta::audio_promise > GetAudioPromise
Audio domain promise accessor.
Definition Awaiters.hpp:231