Skip to main content

Crate zerodds_foundation

Crate zerodds_foundation 

Source
Expand description

Crate zerodds-foundation. Safety classification: SAFE.

Foundation-Layer-Primitives fuer den ZeroDDS-Stack: Hot-Path- Buffer-Pools, Wire-Integritaets-Hashes (CRC-32C / CRC-64-XZ / MD5), Observability-Event-Sprache + Sinks, Tracing-Spans + Histogramme, und ein Lock-Free-Read RCU-Cell-Container.

no_std-tauglich, forbid(unsafe_code). Pure-Rust ohne externe Crates — die Foundation-Pillar-Idee „Frame bleibt nicht hohl“.

§Schichten-Position

Layer 0 (Foundation). Hat keine Dependencies auf andere ZeroDDS-Crates. Wird von Layer 1 (Primitives: cdr, qos, types) und allen hoeheren Schichten verwendet.

Architektur-Referenz: docs/architecture/02_architecture.md §3 und docs/architecture/04_safety_by_architecture.md §2.

§Public API

§Feature-Flags

FeatureDefaultZweck
stdAktiviert BufferPool, RcuCell, StderrJsonSink, VecSink. Implies alloc.
alloc✅ (via std)Aktiviert observability + tracing + MD5 mit Vec-Padding.
safetyReserviert fuer zukuenftige Safety-Build-Constraints.

Ohne Features (default-features = false): nur PoolBuffer, crc32c, crc64_xz, md5 (no_std-MD5-Pfad ist auf 56 Byte Eingabe limitiert).

§Beispiel

use zerodds_foundation::{crc32c, PoolBuffer, PoolBufferError};

// CRC-32C ueber ein RTPS-Datagramm.
let payload = b"\x52\x54\x50\x53\x02\x05\x01\x0F";
let checksum = crc32c(payload);
assert_eq!(checksum & 0xFFFF_FFFF, checksum);

// Hot-Path-Buffer mit fester Kapazitaet.
let mut buf: PoolBuffer<256> = PoolBuffer::new();
buf.extend_from_slice(payload).unwrap();
assert_eq!(buf.as_slice(), payload);

// Overflow ist explizit, kein Panic.
let mut tiny: PoolBuffer<4> = PoolBuffer::new();
assert_eq!(
    tiny.extend_from_slice(payload),
    Err(PoolBufferError::Overflow)
);

Re-exports§

pub use buffer::PoolBuffer;
pub use buffer::PoolBufferError;
pub use crc::crc32c;
pub use crc::crc64_xz;
pub use crc::md5;
pub use observability::Component;
pub use observability::Event;
pub use observability::Level;
pub use observability::NullSink;
pub use observability::SharedSink;
pub use observability::Sink;
pub use observability::null_sink;
pub use observability::StderrJsonSink;
pub use observability::VecSink;
pub use rcu::RcuCell;
pub use tracing::Histogram;
pub use tracing::Span;
pub use tracing::SpanContext;
pub use tracing::SpanId;
pub use tracing::SpanKind;
pub use tracing::SpanStatus;
pub use tracing::TraceId;

Modules§

buffer
Fixed-Capacity Stack-Buffer fuer Hot-Path-Allokationen.
crc
Wire-Integrity-Primitive: CRC-32C, CRC-64-XZ, MD5.
observability
Observability — strukturierte DDS-Events fuer Tracing und Metriken.
rcu
RCU-Cell — Copy-on-Write-Container fuer wenig-Schreib/viel-Lese-Patterns.
tracing
Spans + Histogramme — grobgranulare Tracing-Primitive.