FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
live_backend.hpp
Go to the documentation of this file.
1#pragma once
2// LiveBackend: what RunnerDeps::backend points at for TransportKind::Live. The live session
3// (fastmm::live, src/live/session.cpp) owns the clock, transport and feed; live_factory<S>
4// (strategies/factory_live.hpp) builds Engine<S, TscClock, LiveTransport, RingFeed> on them.
5// Header-only and core-only: strategy libraries that register Live factories need no networking.
6#include "fastmm/core/engine_runner.hpp"
8#include "fastmm/core/transport.hpp"
9#include "fastmm/strategies/engine_factory.hpp"
11
12#include <memory>
13
14namespace fastmm::live {
15
16struct LiveBackend {
17 TscClock* clock = nullptr;
18 LiveTransport* transport = nullptr;
19 RingFeed* feed = nullptr;
20};
22template <StrategyLike S>
23std::unique_ptr<IEngineRunner> make_live_runner(TransportKind kind, RunnerDeps& deps) {
24 if (kind != TransportKind::Live || deps.backend == nullptr) return nullptr;
25 auto* b = static_cast<LiveBackend*>(deps.backend);
26 return make_engine_runner<S>(deps, *b->clock, *b->transport, *b->feed);
27}
28
29} // namespace fastmm::live
Definition session.hpp:50
std::unique_ptr< IEngineRunner > make_live_runner(TransportKind kind, RunnerDeps &deps)
Definition live_backend.hpp:25
TransportKind
Definition registry.hpp:33
Strategy registry (8.6, ADR-0012): name -> parameter schema + one factory per transport kind,...
Everything a factory needs that is backend-independent.
Definition registry.hpp:51
void * backend
Definition registry.hpp:59
Definition live_backend.hpp:18
TscClock * clock
Definition live_backend.hpp:19
RingFeed * feed
Definition live_backend.hpp:21
LiveTransport * transport
Definition live_backend.hpp:20
Time primitives.