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.

What it shows

  • A publisher writes ShapeType samples — any vendor's ShapesDemo works as the source.
  • zerodds-record --decode captures to three artifacts at once: the binary .zddsrec, a typed SQLite table and a typed NDJSON file, following the writer's type from shapes.idl with no compiled type.
  • zerodds-replay auto-detects the format by extension (.zddsrec | .ndjson/.json | .db) and re-stamps the original raw_cdr onto 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.

Was es zeigt

  • Ein Publisher schreibt ShapeType-Samples — als Quelle taugt jede Vendor-ShapesDemo.
  • zerodds-record --decode zeichnet in drei Artefakte gleichzeitig auf: die binäre .zddsrec, eine typisierte SQLite-Tabelle und eine typisierte NDJSON-Datei, dem Writer-Typ aus shapes.idl folgend, ohne kompilierten Typ.
  • zerodds-replay erkennt das Format an der Endung (.zddsrec | .ndjson/.json | .db) und stempelt das ursprüngliche raw_cdr wieder 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

Verwandt