Decoded recorder
Capture, decode to JSON or SQLite, and replay any topic — with an out-of-band IDL and no compiled type.
- Example:
decoded-recorder - Repository: zero-dds-snippets
What it shows
- Three CLI tools over one reflective decode core:
zerodds-spy(live monitor),zerodds-record(capture) andzerodds-replay(re-publish). --decode --type-file sensor.idlturns raw samples into typed NDJSON and a per-topic SQLite table — one column per flattened field, a child table for a nested sequence, joined onsample_id.- The
.zddsrecpreserves the on-the-wire byte order and XCDR version, so a big-endian or XCDR1 capture replays exactly as it arrived. - Without
--type-filethe spy still follows the type: it learns the writer'stype_namefrom discovery and prints a hex snippet until the matching IDL is supplied.
Capture and replay
zerodds-record record -t Readings --decode --type-file sensor.idl \
--out-json readings.ndjson --out-sqlite readings.db
zerodds-replay replay capture.zddsrec --inject
zerodds-replay replay readings.ndjson --inject
zerodds-replay replay readings.db --inject
zerodds-replay replay capture.zddsrec --time-scale 60
Output
$ zerodds-spy -t Readings --type-file sensor.idl --decode
zerodds-spy: attached topic=Readings type=telemetry::Reading
[1] writer=… type=telemetry::Reading {"sensor_id":7,"name":"intake","unit":0,"value":21.5,"history":[20,21,22]}
Taken verbatim from the example's own README.
See also
Decoded Recorder
Jedes Topic aufzeichnen, nach JSON oder SQLite decodieren und wieder abspielen — mit Out-of-Band-IDL und ohne kompilierten Typ.
- Beispiel:
decoded-recorder - Repository: zero-dds-snippets
Was es zeigt
- Drei CLI-Werkzeuge über einem reflektiven Decode-Kern:
zerodds-spy(Live-Monitor),zerodds-record(Aufzeichnung) undzerodds-replay(Wiedereinspielen). --decode --type-file sensor.idlmacht aus Rohsamples typisiertes NDJSON und eine SQLite-Tabelle pro Topic — eine Spalte je geflachtem Feld, eine Kindtabelle für eine verschachtelte Sequence, verbunden übersample_id.- Die
.zddsrecbewahrt Byte-Reihenfolge und XCDR-Version der Leitung, sodass eine Big-Endian- oder XCDR1-Aufzeichnung exakt so abgespielt wird, wie sie ankam. - Ohne
--type-filefolgt der Spy dem Typ trotzdem: Er lernt dentype_namedes Writers aus dem Discovery und gibt einen Hex-Ausschnitt aus, bis die passende IDL geliefert wird.
Aufzeichnen und abspielen
zerodds-record record -t Readings --decode --type-file sensor.idl \
--out-json readings.ndjson --out-sqlite readings.db
zerodds-replay replay capture.zddsrec --inject
zerodds-replay replay readings.ndjson --inject
zerodds-replay replay readings.db --inject
zerodds-replay replay capture.zddsrec --time-scale 60
Ausgabe
$ zerodds-spy -t Readings --type-file sensor.idl --decode
zerodds-spy: attached topic=Readings type=telemetry::Reading
[1] writer=… type=telemetry::Reading {"sensor_id":7,"name":"intake","unit":0,"value":21.5,"history":[20,21,22]}
Wörtlich aus dem README des Beispiels übernommen.