pub struct SessionRecorder<M: Model> { /* private fields */ }Expand description
Records a WASM session for deterministic replay.
Wraps a StepProgram and intercepts all input operations, recording
them as TraceRecords. Frame checksums are computed after each render
using the same FNV-1a algorithm as the render trace system.
Implementations§
Source§impl<M: Model> SessionRecorder<M>
impl<M: Model> SessionRecorder<M>
Sourcepub fn new(model: M, width: u16, height: u16, seed: u64) -> Self
pub fn new(model: M, width: u16, height: u16, seed: u64) -> Self
Create a new recorder with the given model, initial size, and seed.
Sourcepub fn init(&mut self) -> Result<(), WebBackendError>
pub fn init(&mut self) -> Result<(), WebBackendError>
Initialize the model and record the first frame checkpoint.
Sourcepub fn push_event(&mut self, ts_ns: u64, event: Event)
pub fn push_event(&mut self, ts_ns: u64, event: Event)
Record an input event at the given timestamp (nanoseconds since start).
Sourcepub fn resize(&mut self, ts_ns: u64, width: u16, height: u16)
pub fn resize(&mut self, ts_ns: u64, width: u16, height: u16)
Record a resize at the given timestamp.
Sourcepub fn advance_time(&mut self, ts_ns: u64, dt: Duration)
pub fn advance_time(&mut self, ts_ns: u64, dt: Duration)
Record a time advancement (tick) at the given timestamp.
Sourcepub fn step(&mut self) -> Result<StepResult, WebBackendError>
pub fn step(&mut self) -> Result<StepResult, WebBackendError>
Process one step and record a frame checkpoint if rendered.
Sourcepub fn finish(self) -> SessionTrace
pub fn finish(self) -> SessionTrace
Finish recording and return the completed trace.
Sourcepub fn program(&self) -> &StepProgram<M>
pub fn program(&self) -> &StepProgram<M>
Access the underlying program.
Sourcepub fn program_mut(&mut self) -> &mut StepProgram<M>
pub fn program_mut(&mut self) -> &mut StepProgram<M>
Mutably access the underlying program.
Auto Trait Implementations§
impl<M> Freeze for SessionRecorder<M>where
M: Freeze,
impl<M> RefUnwindSafe for SessionRecorder<M>where
M: RefUnwindSafe,
impl<M> Send for SessionRecorder<M>where
M: Send,
impl<M> Sync for SessionRecorder<M>where
M: Sync,
impl<M> Unpin for SessionRecorder<M>where
M: Unpin,
impl<M> UnwindSafe for SessionRecorder<M>where
M: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more