zerodds-flatdata
Zero-Copy Same-Host-Pub/Sub fuer den ZeroDDS-Stack: FlatStruct-Trait, Slot-Layout per Spec, drei produktive SlotBackend-Implementationen (in-memory + POSIX shm/mmap + Iceoryx2-Bridge). Safety classification: STANDARD (mit per-Block-SAFETY-Kommentaren um die unsafe trait FlatStruct-Garantien herum lokalisiert).
Spec-Mapping
| Spec | Abschnitt |
|---|---|
| ZeroDDS-flatdata 1.0 | §1 (FlatStruct + derive), §2 (Slot-Layout), §4 (Wire-Pfad), §5 (Lifetime + Refcount), §6 (Schema-Versioning), §7 (Sicherheit), §8/§9 (Writer-/Reader-API) |
| ADR-0003 | Drei-Backend-Architektur (in-memory / POSIX shm / Iceoryx2) |
Was ist drin
FlatStruct-Trait —unsafe traitmitCopy + 'static + Send + SyncundTYPE_HASH-Konstante. Garantiert Layout-Stabilitaet, sodassas_bytes()undfrom_bytes_unchecked()per Layout safe sind.SlotHeader+ Slot-Layout — 16-Byte-Header (sequence_number,sample_size,reader_mask, reserved) + Payload (Spec §2).SlotBackend-Trait — abstrahiert das Backend; Reader/Writer sind generisch.InMemorySlotAllocator— Default-Backend fuer Tests + Single-Process-Pub/Sub.PosixSlotAllocator(Featureposix-mmap, default an) —shm_open+mmap, Cross-Process Same-Host. Owner/Consumer-Modell mit flink-Datei.Iceoryx2Publisher<T>/Iceoryx2Subscriber<T>(Featureiceoryx2-bridge) — separate Pub/Sub-API gegen Eclipse iceoryx2 v0.8. Mappt aufloan_slice_uninit+send/receive. Type-Hash-Cross-Validation per Service-Name-Komposition.FlatWriter<T>+FlatSlot<T>— Spec §8.1/§8.2:write+loan_slot+commit/Drop-discard.FlatReader<T>+FlatSampleRef<T>— Spec §9.1:readmit Type-Hash-Cross-Validation (Spec §6.1) +last_sn-Re-Read-Suppression.ShmLocator+is_same_host+ FNV-1a-Helper — Discovery-Vendor-PID-Hilfen.
Schichten-Position
Layer 4 — Core Services. Keine ZeroDDS-Crate-Deps; einzige externe Dep ist shared_memory (optional, hinter posix-mmap-Feature).
Quickstart
use Arc;
use ;
unsafe
let alloc = new;
let writer = new;
let reader = new;
writer.write.unwrap;
let got = reader.read.unwrap.unwrap;
assert_eq!;
Feature-Flags
| Feature | Default | Zweck |
|---|---|---|
std |
✅ | Standard-Library + Mutex + Threads. |
alloc |
✅ (via std) | Vec/Arc. |
posix-mmap |
✅ | PosixSlotAllocator (POSIX shm_open + mmap). Hangt an shared_memory. |
iceoryx2-bridge |
❌ | Iceoryx2-Adapter-Skelett (Bridge zu iceoryx2-Service). |
Stabilitaet
Alle pub-Items sind ab 1.0.0 stabil. Die unsafe trait FlatStruct ist API-stabil; Implementer müssen die Layout-Garantien per unsafe impl zusichern.
Tests
Lizenz
Apache-2.0. Siehe LICENSE.
Siehe auch
docs/specs/zerodds-flatdata-1.0.mdzerodds-dcps— DCPS-Integration (Featureflatdata-integration)zerodds-flatdata-derive—#[derive(FlatStruct)]Proc-Macro