Skip to main content

Crate wowlab_engine_sim

Crate wowlab_engine_sim 

Source
Expand description

Deterministic simulation scheduling and telemetry accumulation.

use wowlab_engine_ports::{Event, SimState};
use wowlab_engine_sim::EventQueue;
use wowlab_engine_telemetry::TelemetrySink;
use wowlab_types::sim::SimTime;

fn canonical_ports(_: Option<Event>, _: Option<SimState>, _: Option<TelemetrySink>) {}

let mut queue = EventQueue::new();
queue.push(Event::PlayerReady {
    t: SimTime::from_millis(25),
});
queue.push(Event::PlayerReady {
    t: SimTime::from_millis(10),
});

assert_eq!(queue.pop().map(|event| event.timestamp()), Some(SimTime::from_millis(10)));
โ“˜
use wowlab_engine_sim::{Event, SimState, TelemetrySink};

Modulesยง

engine ๐Ÿ”’
queue ๐Ÿ”’
Timing wheel event queue: 32768 slots x 32ms, far-future events held in an overflow bucket reinserted on rotation.
telemetry ๐Ÿ”’
Cross-iteration telemetry accumulation, capture, encoding, and parallel merge.

Structsยง

EventQueue
Priority event queue using a timing wheel with arena-allocated linked lists.
RepresentativeIteration
Deterministic identity and DPS for one completed iteration, the only per-iteration state retained for representative selection.
RunningDpsStats
Running DPS statistics snapshot.
SimEngine
Event loop for a single sim iteration; queue and handler are borrowed for reuse across iterations.
SimEngineRefs
Mutable references shared across simulation iterations.
TelemetryAccumulator
Accumulates telemetry incrementally across all iterations.

Type Aliasesยง

Result
Result of driving a simulation iteration.