zerodds-flatdata

Layer 4 — Core Services. Zero-copy same-host pub/sub (zerodds-flatdata-1.0).

zerodds-flatdata provides the FlatStruct trait + slot layout for sub-µs-latency same-host pub/sub via SHM. Three production backends — in-memory (tests + single-process), POSIX shm/mmap (cross-process same-host), Iceoryx2 (optional bridge).

Spec anchors

  • docs/specs/zerodds-flatdata-1.0.md §1–§9 — complete spec (FlatStruct, slot layout, discovery, wire path, lifetime, schema versioning, safety, API).
  • ADR-0003 — three-backend architecture.

Layer position

Layer 4 — no ZeroDDS crate deps; shared_memory as an external dep is optional.

Quickstart

use std::sync::Arc;
use zerodds_flatdata::{FlatStruct, FlatWriter, FlatReader, InMemorySlotAllocator};

#[derive(Copy, Clone, Debug, PartialEq)]
#[repr(C)]
struct Pose { x: f64, y: f64, z: f64 }

unsafe impl FlatStruct for Pose {
    const TYPE_HASH: [u8; 16] = [0xAA; 16];
}

let alloc = Arc::new(InMemorySlotAllocator::new(0, 4, Pose::WIRE_SIZE));
let writer = FlatWriter::<Pose>::new(Arc::clone(&alloc), 0b1);
let reader = FlatReader::<Pose>::new(Arc::clone(&alloc), 0);

writer.write(&Pose { x: 1.0, y: 2.0, z: 3.0 }).unwrap();
let got = reader.read().unwrap().unwrap();

Feature flags

Feature Default Purpose
std Standard library + mutex + threads.
alloc Vec/Arc.
posix-mmap PosixSlotAllocator (POSIX shm/mmap).
iceoryx2-bridge Iceoryx2 adapter skeleton.

Stability

All pub items are stable from 1.0.0. unsafe trait FlatStruct is API-stable; implementers must guarantee the layout guarantees via unsafe impl.

zerodds-flatdata

Layer 4 — Core Services. Zero-Copy Same-Host-Pub/Sub (zerodds-flatdata-1.0).

zerodds-flatdata liefert den FlatStruct-Trait + Slot-Layout fuer Sub-µs-Latenz Same-Host-Pub/Sub via SHM. Drei produktive Backends — In-Memory (Tests + Single-Process), POSIX shm/mmap (Cross-Process Same-Host), Iceoryx2 (optionale Bridge).

Spec-Anker

  • docs/specs/zerodds-flatdata-1.0.md §1–§9 — komplettes Spec (FlatStruct, Slot-Layout, Discovery, Wire-Pfad, Lifetime, Schema-Versioning, Sicherheit, API).
  • ADR-0003 — Drei-Backend-Architektur.

Schichten-Position

Layer 4 — keine ZeroDDS-Crate-Deps; shared_memory als externe Dep ist optional.

Quickstart

use std::sync::Arc;
use zerodds_flatdata::{FlatStruct, FlatWriter, FlatReader, InMemorySlotAllocator};

#[derive(Copy, Clone, Debug, PartialEq)]
#[repr(C)]
struct Pose { x: f64, y: f64, z: f64 }

unsafe impl FlatStruct for Pose {
    const TYPE_HASH: [u8; 16] = [0xAA; 16];
}

let alloc = Arc::new(InMemorySlotAllocator::new(0, 4, Pose::WIRE_SIZE));
let writer = FlatWriter::<Pose>::new(Arc::clone(&alloc), 0b1);
let reader = FlatReader::<Pose>::new(Arc::clone(&alloc), 0);

writer.write(&Pose { x: 1.0, y: 2.0, z: 3.0 }).unwrap();
let got = reader.read().unwrap().unwrap();

Feature-Flags

Feature Default Zweck
std Standard-Library + Mutex + Threads.
alloc Vec/Arc.
posix-mmap PosixSlotAllocator (POSIX shm/mmap).
iceoryx2-bridge Iceoryx2-Adapter-Skelett.

Stabilitaet

Alle pub-Items sind ab 1.0.0 stabil. unsafe trait FlatStruct ist API-stabil; Implementer muessen die Layout-Garantien per unsafe impl zusichern.