zerodds-dcps 1.0.0-rc.1

DCPS Public API (OMG DDS 1.4 §2.2.2): DomainParticipant, Publisher, Subscriber, Topic, DataWriter, DataReader. Live-Runtime mit SPDP/SEDP/WLP, Built-in-Topics, TypeLookup-Service, Durability-Backend.
Documentation

zerodds-dcps

License: Apache-2.0 docs.rs

DCPS Public API (OMG DDS 1.4 §2.2.2) fuer den ZeroDDS-Stack. Live-Runtime mit SPDP/SEDP/WLP, Built-in-Topics, TypeLookup-Service, Durability-Backend, Conditions und WaitSet. Safety classification: STANDARD.

Spec-Mapping

Spec Abschnitt
OMG DDS 1.4 §2.2 (DCPS-Module)
DDSI-RTPS 2.5 §8.5 (Discovery), §8.4.13 (WLP), §9.6.4.8 (Inline-QoS)
OMG XTypes 1.3 §7.6.3.3 (TypeLookup-Service), §7.6.3.7 (TypeConsistency)

Was ist drin

  • Entity-HierarchieDomainParticipantFactory als Singleton, DomainParticipant als Wurzel, darunter Publisher/DataWriter bzw. Subscriber/DataReader.
  • Typed Writer/ReaderDataWriter<T> / DataReader<T> mit DdsType-Bound. End-User implementieren DdsType per Hand oder via zerodds-idl-rust-Codegen.
  • TopicsTopic<T> plus ContentFilteredTopic (SQL92-Filter) und MultiTopic (Hash-Join).
  • Built-in-TopicsDCPSParticipant, DCPSTopic, DCPSPublication, DCPSSubscription (DDS 1.4 §2.2.5).
  • QoS-Vollabdeckung — alle 22 Spec-Policies, inkl. Exclusive- Ownership-Filter im Sample-Lieferpfad und Time-Based-Filter.
  • Discovery + TypeLookup — Live-Runtime spawnt SPDP-/SEDP-/WLP-/ TypeLookup-Endpoints; Cross-Vendor-Interop gegen Cyclone-DDS und Fast-DDS verifiziert.
  • Durability — Transient-In-Memory- und Persistent-On-Disk- Backends mit Sequence-orderierter Replay-Liste.
  • Conditions/WaitSetReadCondition, QueryCondition, GuardCondition, StatusCondition und WaitSet.
  • Security-Hook — opt-in security-Feature spannt das SharedSecurityGate ueber den UDP-Hot-Path (DDS-Security 1.2).

Schichten-Position

Layer 4 — Core Services. Bauend auf Layer 1 (zerodds-foundation, -cdr, -qos, -types, -time-service), Layer 2 (-rtps, -discovery, -transport-*) und Layer 3 (-idl, -idl-rust, -xml).

Quickstart

use zerodds_dcps::*;

let factory = DomainParticipantFactory::instance();
// Live-Mode: spawnt Runtime, bindet UDP-Sockets, faehrt SPDP/SEDP.
// (Hier `_offline` fuer Doctest-Reproduzierbarkeit.)
let participant = factory.create_participant_offline(0, DomainParticipantQos::default());
let topic = participant
    .create_topic::<RawBytes>("Chatter", TopicQos::default())
    .expect("create_topic");

let publisher = participant.create_publisher(PublisherQos::default());
let writer = publisher
    .create_datawriter::<RawBytes>(&topic, DataWriterQos::default())
    .expect("create_datawriter");

writer.write(&RawBytes::new(vec![1, 2, 3])).expect("write");

Feature-Flags

Feature Default Zweck
std Aktiviert die Live-Runtime, Threads, UDP-Sockets, Conditions/WaitSet, Durability-Backends. Implies alloc.
alloc ✅ (via std) Pflichtig: Vec/String/BTreeMap.
safety Reserviert fuer zukuenftige Safety-Build-Constraints.
security Aktiviert das SharedSecurityGate im UDP-Hot-Path (DDS-Security 1.2).
live-interop Aktiviert Cyclone-DDS-/Fast-DDS-Live-Tests gegen Lab-Hosts.
flatdata-integration ADR-0005: opt-in Dual-Stack-Schreib-/Lesepfad ueber FlatStruct.
inspect Embargo: PDE-Reality-Inspector-Tap-Hooks. Wird im Public-Mirror entfernt.

Stabilitaet

Alle pub-Items sind ab 1.0.0 stabil; Breaking-Changes erfordern Major-Version-Bump. Doc-hidden __push_raw/__drain_pending-Hooks sind interne Test-API und nicht stabil.

Tests

cargo test -p zerodds-dcps

Lizenz

Apache-2.0. Siehe LICENSE.

Siehe auch