code wiki / (root) / nx_stream_multiplexer.nx

nx_stream_multiplexer.nx

buildroot/runtime/nx_stream_multiplexer.nx

10990 B298 linesdepth 2pulls 2 transitivereach 26 importersview sourcekind librarytopic stream
docsdependenciesstructsconstsfunctions

about

nx_stream_multiplexer.nx -- interleaved concurrent modality streams. Per CARDINAL [[feedback-parallel-companion-multimodal-dnd-real-time]]: LLM streaming + image gen + video + audio TTS + game actions must run CONCURRENT on one RTX 5080 with sub-50ms preemption. The multiplexer is the substrate that orders + interleaves output tokens from multiple generators into one ordered output stream the operator perceives. V1 ships sealed stream-class enum (one per modality), per-stream priority (LLM speech > game actions > image > video > audio fill), chunk arrival timestamps, fairness budget (no starvation), and next-chunk arbitration that respects priority + freshness + budget.

dependencies 2 imports · 11 importers

nx_syscalls.nx nx_tier.nx nx_stream_multiplexer.nx nx_bench_companion.nx nx_companion_compose_test.nx nx_dual_companion_compose_test.nx nx_dual_real_llm_compose_test.nx nx_dual_real_llm_emit_test.nx nx_quad_companion_compose_test.nx nx_quad_real_emit_test.nx nx_session.nx nx_session_test.nx nx_stream_multiplexer_test.nx

diagram shows first 10 each side; +0 more imports, +1 more importers in the complete lists below.

imports: nx_syscalls.nxnx_tier.nx

imported by: nx_bench_companion.nxnx_companion_compose_test.nxnx_dual_companion_compose_test.nxnx_dual_real_llm_compose_test.nxnx_dual_real_llm_emit_test.nxnx_quad_companion_compose_test.nxnx_quad_real_emit_test.nxnx_session.nxnx_session_test.nxnx_stream_multiplexer_test.nxnx_triple_companion_compose_test.nx

structs

39struct NxStreamChunk
50struct NxStreamMultiplexer

consts

19const NX_SM_CLASS_LLM_TEXT: nx_int = 0
20const NX_SM_CLASS_GAME_ACTION: nx_int = 1
21const NX_SM_CLASS_AUDIO_TTS: nx_int = 2
22const NX_SM_CLASS_IMAGE_TILE: nx_int = 3
23const NX_SM_CLASS_VIDEO_FRAME: nx_int = 4
24const NX_SM_CLASS_TOOL_RESULT: nx_int = 5
25const NX_SM_CLASS_SYSTEM_EVENT: nx_int = 6 // highest priority, always wins
26const NX_SM_CLASS_N: nx_int = 7
30const NX_SM_V_DELIVERED: nx_int = 0
31const NX_SM_V_EMPTY: nx_int = 1 // no chunks available
32const NX_SM_V_STARVED: nx_int = 2 // backed off a stream that hit budget
33const NX_SM_V_INVALID: nx_int = 3
34const NX_SM_V_NULL: nx_int = 4
35const NX_SM_V_N: nx_int = 5
48const NX_SM_C_BYTES: nx_int = 48
66const NX_SM_BYTES: nx_int = 80

functions

70func nx_sm_class_is_valid(c: nx_int) -> nx_int
76func nx_sm_v_is_valid(v: nx_int) -> nx_int
called by 1: main
85func nx_sm_class_priority(c: nx_int) -> nx_int
called by 2: nx_sm_peek_nextmain
98func nx_sm_new(capacity: nx_int,
131func _sm_chunk_at(m: *NxStreamMultiplexer, idx: nx_int) -> *NxStreamChunk
138func nx_sm_push(m: *NxStreamMultiplexer,
165func nx_sm_peek_next(m: *NxStreamMultiplexer, now_us: nx_size) -> *NxStreamChunk
198func _sm_remove_at(m: *NxStreamMultiplexer, idx: nx_int) -> nx_int
called by 1: nx_sm_next calls 1: _sm_chunk_at
223func nx_sm_next(m: *NxStreamMultiplexer,
274func nx_sm_epoch_tick(m: *NxStreamMultiplexer) -> nx_int
called by 2: mainmain
288func nx_sm_pending_count(m: *NxStreamMultiplexer) -> nx_int
293func nx_sm_served_count(m: *NxStreamMultiplexer, stream_class: nx_int) -> nx_int
called by 1: main calls 1: nx_sm_class_is_valid