Recorder to replay — the whole loop
A capture and replay loop built only from the CLI tools: publish, record into three artifacts at once, replay from each of them, read the result back.
- Example:
recorder-replay-workflow - Repository: zero-dds-snippets
What it shows
- A publisher writes
ShapeTypesamples — any vendor's ShapesDemo works as the source. zerodds-record --decodecaptures to three artifacts at once: the binary.zddsrec, a typed SQLite table and a typed NDJSON file, following the writer's type fromshapes.idlwith no compiled type.zerodds-replayauto-detects the format by extension (.zddsrec|.ndjson/.json|.db) and re-stamps the originalraw_cdronto the wire, so all three persisted forms replay the same samples.- Live discovery needs multicast loopback — reliable on Linux, flaky on macOS. The decode parse and the three sinks are exercised headless in CI.
By hand
# 1) capture 6 s of Square into .zddsrec + typed SQLite + typed NDJSON
zerodds-record record -t Square -d 0 --duration 6s -o cap.zddsrec \
--decode --type-file shapes.idl --map Square=ShapeType \
--out-sqlite cap.db --out-json cap.ndjson &
# 2) feed it (any ShapesDemo publisher on domain 0 works)
cargo run -p zerodds-dcps --example shapes_demo_publisher -- Square BLUE 0
# 3) re-inject from each persisted form onto a fresh domain
zerodds-replay replay cap.zddsrec --inject --inject-domain 1
zerodds-replay replay cap.ndjson --inject --inject-domain 1
zerodds-replay replay cap.db --inject --inject-domain 1
# 4) watch the replayed stream
cargo run -p zerodds-dcps --example shapes_demo_subscriber -- Square 1
See also
Recorder bis Replay — die ganze Schleife
Eine Aufzeichnungs- und Wiedergabeschleife nur aus den CLI-Werkzeugen: publizieren, in drei Artefakte gleichzeitig aufzeichnen, aus jedem davon abspielen, das Ergebnis zurücklesen.
- Beispiel:
recorder-replay-workflow - Repository: zero-dds-snippets
Was es zeigt
- Ein Publisher schreibt
ShapeType-Samples — als Quelle taugt jede Vendor-ShapesDemo. zerodds-record --decodezeichnet in drei Artefakte gleichzeitig auf: die binäre.zddsrec, eine typisierte SQLite-Tabelle und eine typisierte NDJSON-Datei, dem Writer-Typ ausshapes.idlfolgend, ohne kompilierten Typ.zerodds-replayerkennt das Format an der Endung (.zddsrec|.ndjson/.json|.db) und stempelt das ursprünglicheraw_cdrwieder auf die Leitung, sodass alle drei persistierten Formen dieselben Samples abspielen.- Live-Discovery braucht Multicast-Loopback — auf Linux verlässlich, auf macOS unzuverlässig. Der Decode-Parse und die drei Sinks werden headless in CI gefahren.
Von Hand
# 1) 6 s Square in .zddsrec + typisiertes SQLite + typisiertes NDJSON aufzeichnen
zerodds-record record -t Square -d 0 --duration 6s -o cap.zddsrec \
--decode --type-file shapes.idl --map Square=ShapeType \
--out-sqlite cap.db --out-json cap.ndjson &
# 2) speisen (jeder ShapesDemo-Publisher auf Domain 0 taugt)
cargo run -p zerodds-dcps --example shapes_demo_publisher -- Square BLUE 0
# 3) aus jeder persistierten Form auf eine frische Domain einspielen
zerodds-replay replay cap.zddsrec --inject --inject-domain 1
zerodds-replay replay cap.ndjson --inject --inject-domain 1
zerodds-replay replay cap.db --inject --inject-domain 1
# 4) den wiedergegebenen Strom mitlesen
cargo run -p zerodds-dcps --example shapes_demo_subscriber -- Square 1