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

◆ spawn_inbound()

void MayaFlux::Portal::Forma::Bridge::spawn_inbound ( uint32_t  id,
std::function< float()>  source 
)
private

Definition at line 59 of file Bridge.cpp.

60{
61 auto it = m_records.find(id);
62 if (it == m_records.end()) {
64 "Bridge::bind: unknown element id {}", id);
65 return;
66 }
67
68 cancel_inbound(it->second);
69
70 auto name = make_task_name(id, "inbound");
71 it->second.inbound_task = name;
72
73 auto& rec = it->second;
74 auto writer = rec.writer;
75
76 auto routine = [](Vruta::TaskScheduler&,
77 std::function<float()> src,
78 std::function<void(float)> write) -> Vruta::GraphicsRoutine {
79 auto& p = co_await Kriya::GetGraphicsPromise {};
80 while (!p.should_terminate) {
81 write(src());
82 co_await Kriya::FrameDelay { .frames_to_wait = 1 };
83 }
84 };
85
87 std::make_shared<Vruta::GraphicsRoutine>(
88 routine(m_scheduler, std::move(source), std::move(writer))),
89 name, false);
90}
#define MF_ERROR(comp, ctx,...)
void write(std::shared_ptr< MappedState< T > > state, std::function< void(std::span< const float >)> sink)
Definition Bridge.hpp:129
Vruta::TaskScheduler & m_scheduler
Definition Bridge.hpp:522
void cancel_inbound(ElementRecord &rec)
Definition Bridge.cpp:352
std::string make_task_name(uint32_t id, const char *suffix) const
Definition Bridge.cpp:346
std::unordered_map< uint32_t, ElementRecord > m_records
Definition Bridge.hpp:527
void add_task(const std::shared_ptr< Routine > &routine, const std::string &name="", bool initialize=false)
Add a routine to the scheduler based on its processing token.
Definition Scheduler.cpp:23
@ Init
Engine/subsystem initialization.
@ Portal
High-level user-facing API layer.
GetPromiseBase< Vruta::graphics_promise > GetGraphicsPromise
Graphics domain promise accessor.

References MayaFlux::Vruta::TaskScheduler::add_task(), cancel_inbound(), MayaFlux::Kriya::FrameDelay::frames_to_wait, MayaFlux::Journal::Init, m_records, m_scheduler, make_task_name(), MF_ERROR, MayaFlux::Journal::Portal, and write().

Referenced by bind(), and bind().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: