zerodds-recorder

Layer 4 — Core Services. Pure-Rust record/replay format (.zddsrec v1.0).

zerodds-recorder delivers a deterministic wire format with a write-once header and sequential frame records, plus a reader, writer, and a thread-safe live-session API.

Spec anchors

  • docs/specs/zddsrec-1.0.md §1-§5.

Layer position

Layer 4 — no ZeroDDS crate deps. Consumed by tools/replay (inspect/dump/replay CLI) and tools/recorder-bridge (live recording from the DcpsRuntime).

Quickstart

use zerodds_recorder::{RecordWriter, Header, Frame, SampleKind};

let mut sink = Vec::new();
let mut writer = RecordWriter::new(&mut sink);
writer.write_header(&Header { /* ... */ }).unwrap();
writer.write_frame(&Frame { /* ... */ }).unwrap();

Stability

1.0.0-rc.3. The wire format ZDDSREC_VERSION = 1 is stable; additive extensions (streaming reader, IndexAddFrame, compression) are designed as major-2.0 hooks — the reader rejects unknown FrameMagic bytes with ReadError::UnknownFrameMagic.

zerodds-recorder

Layer 4 — Core Services. Pure-Rust Record/Replay-Format (.zddsrec v1.0).

zerodds-recorder liefert ein deterministisches Wire-Format mit einmal-geschriebenem Header und sequentiellen Frame-Records, plus Reader, Writer und thread-safe Live-Session-API.

Spec-Anker

  • docs/specs/zddsrec-1.0.md §1-§5.

Schichten-Position

Layer 4 — keine ZeroDDS-Crate-Deps. Konsumiert von tools/replay (inspect/dump/replay-CLI) und tools/recorder-bridge (Live-Recording aus DcpsRuntime).

Quickstart

use zerodds_recorder::{RecordWriter, Header, Frame, SampleKind};

let mut sink = Vec::new();
let mut writer = RecordWriter::new(&mut sink);
writer.write_header(&Header { /* ... */ }).unwrap();
writer.write_frame(&Frame { /* ... */ }).unwrap();

Stabilitaet

1.0.0-rc.3. Wire-Format ZDDSREC_VERSION = 1 ist stabil; additive Erweiterungen (Streaming-Reader, IndexAddFrame, Compression) sind als Major-2.0-Hooks designt — der Reader lehnt unbekannte FrameMagic-Bytes mit ReadError::UnknownFrameMagic ab.