1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 ZeroDDS Contributors
//! Crate `zerodds-recorder`. Safety classification: **STANDARD**.
//!
//! `.zddsrec` Recording-/Replay-Format. Spec:
//! [`docs/specs/zddsrec-1.0.md`](../../docs/specs/zddsrec-1.0.md).
//!
//! ## Schichten-Position
//!
//! Layer 4 — Core Services. Pure-Rust + alloc, ohne ZeroDDS-Crate-Deps.
//!
//! ## Public API (Stand 1.0.0-rc.1)
//!
//! - [`Header`], [`Frame`], [`FrameView`], [`SampleKind`], `ParticipantEntry`, `TopicEntry`.
//! - [`RecordWriter`] / [`WriteError`] — schreibt einen `.zddsrec`-Stream.
//! - [`RecordReader`] / [`ReadError`] — parsed einen `.zddsrec`-Stream.
//! - [`RecordingSession`] / [`SessionError`] / [`SessionOptions`] / [`TopicKey`] — high-level API.
//!
//! # Format-Layout
//!
//! Ein `.zddsrec`-File besteht aus einem [`Header`] gefolgt von einer
//! Sequenz von [`Frame`]-Records. Endianness: little-endian fuer alle
//! Multi-Byte-Felder.
//!
//! ```text
//! +---------------------------------+
//! | Magic "ZDDS" (4 bytes) |
//! | Version u32 (=1) |
//! | TimeBaseUnixNs i64 |
//! | ParticipantCount u32 |
//! | TopicCount u32 |
//! | Participants[] (GUID16+nameLen+name)
//! | Topics[] (typeLen+typeName+nameLen+name)
//! +---------------------------------+
//! | FrameMagic 'F' (1 byte) |
//! | TimestampDeltaNs i64 |
//! | ParticipantIdx u32 |
//! | TopicIdx u32 |
//! | SampleKind u8 (0=Alive,1=Disposed,2=Unregistered)
//! | PayloadLen u32 |
//! | CdrPayload[PayloadLen] |
//! +---------------------------------+
//! | ... weitere Frames ... |
//! +---------------------------------+
//! ```
//!
//! # Versionierung
//!
//! Version = 1 ([`ZDDSREC_VERSION`]). Backward-incompatible Aenderungen
//! erhoehen die Version; der Reader lehnt unbekannte Versionen ab.
extern crate alloc;
pub use ;
pub use ;
pub use ;
pub use ;