zerodds-dcps

Layer 4 — Core Services. DCPS public API (OMG DDS 1.4 §2.2.2) with a live runtime.

zerodds-dcps is the application layer of ZeroDDS: this is where DomainParticipant, Publisher/DataWriter<T>, Subscriber/DataReader<T>, Topic<T>, built-in topics, conditions/WaitSet and the entire QoS contract (all 22 spec policies) live. The live runtime spawns SPDP/SEDP/WLP/TypeLookup endpoints, drives cross-vendor discovery, and delivers samples over UDP, optionally over TCP/SHM/UDS.

Spec anchors

  • OMG DDS 1.4 §2.2 — the complete DCPS module: entity hierarchy, all 22 QoS policies, built-in topics, ContentFilteredTopic, MultiTopic, conditions/WaitSet, listener bubble-up.
  • DDSI-RTPS 2.5 §8.5 — SPDP/SEDP discovery, WLP (§8.4.13), inline QoS (§9.6.4.8 PID_KEY_HASH + §9.6.3.9 PID_STATUS_INFO).
  • OMG XTypes 1.3 §7.6.3 — TypeLookup service endpoints (§7.6.3.3.4), TypeIdentifier-aware subscriber match (§7.6.3.7), TypeConsistencyEnforcement (DDS 1.4 §2.2.3 default).
  • OMG DDS-Security 1.2 — the opt-in security feature spans the SharedSecurityGate across the UDP hot path.

Source: crates/dcps →

At a glance: DomainParticipantFactoryDomainParticipantPublisher/SubscriberDataWriter<T> / DataReader<T>, plus Topic<T>, built-in topics, conditions/WaitSet, the 22 QoS policies and the sample/instance lifecycle types.

Layer position

Layer 4 — Core Services. Direct dependencies: Layer 0 (zerodds-foundation), Layer 1 (zerodds-cdr, -qos, -types), Layer 2 (zerodds-rtps, -discovery, -transport, -transport-udp), Layer 3 (zerodds-sql-filter).

Quickstart

use zerodds_dcps::*;

let factory = DomainParticipantFactory::instance();
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 Purpose
std Live runtime, threads, UDP sockets, conditions/WaitSet, durability backends.
alloc Vec/String/BTreeMap.
safety Reserved for safety-build constraints.
security SharedSecurityGate in the UDP hot path (DDS-Security 1.2).
live-interop Cyclone/Fast-DDS live tests against lab hosts.
flatdata-integration Dual-stack write/read path via FlatStruct (ADR-0005).

Stability

All pub items are stable from 1.0.0; breaking changes require a major version bump. Doc-hidden test hooks (__push_raw, __drain_pending, __push_raw_with_writer) are internal test API.

zerodds-dcps

Layer 4 — Core Services. DCPS Public API (OMG DDS 1.4 §2.2.2) mit Live-Runtime.

zerodds-dcps ist die Anwender-Schicht von ZeroDDS: hier leben DomainParticipant, Publisher/DataWriter<T>, Subscriber/DataReader<T>, Topic<T>, Built-in-Topics, Conditions/WaitSet und der gesamte QoS-Vertrag (alle 22 Spec-Policies). Die Live-Runtime spawnt SPDP-/SEDP-/WLP-/TypeLookup-Endpoints, fährt das Cross-Vendor-Discovery und liefert Samples über UDP, optional über TCP/SHM/UDS.

Spec-Anker

  • OMG DDS 1.4 §2.2 — komplettes DCPS-Modul: Entity-Hierarchie, alle 22 QoS-Policies, Built-in-Topics, ContentFilteredTopic, MultiTopic, Conditions/WaitSet, Listener-Bubble-Up.
  • DDSI-RTPS 2.5 §8.5 — SPDP/SEDP-Discovery, WLP (§8.4.13), Inline-QoS (§9.6.4.8 PID_KEY_HASH + §9.6.3.9 PID_STATUS_INFO).
  • OMG XTypes 1.3 §7.6.3 — TypeLookup-Service-Endpoints (§7.6.3.3.4), TypeIdentifier-aware Subscriber-Match (§7.6.3.7), TypeConsistencyEnforcement (DDS 1.4 §2.2.3 Default).
  • OMG DDS-Security 1.2 — opt-in security-Feature spannt das SharedSecurityGate über den UDP-Hot-Path.

Quelle: crates/dcps →

Im Überblick: DomainParticipantFactoryDomainParticipantPublisher/SubscriberDataWriter<T> / DataReader<T>, dazu Topic<T>, die Built-in-Topics, Conditions/WaitSet, die 22 QoS-Policies und die Sample-/Instance-Lifecycle-Typen.

Schichten-Position

Layer 4 — Core Services. Direkte Abhängigkeiten: Layer 0 (zerodds-foundation), Layer 1 (zerodds-cdr, -qos, -types), Layer 2 (zerodds-rtps, -discovery, -transport, -transport-udp), Layer 3 (zerodds-sql-filter).

Quickstart

use zerodds_dcps::*;

let factory = DomainParticipantFactory::instance();
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 Live-Runtime, Threads, UDP-Sockets, Conditions/WaitSet, Durability-Backends.
alloc Vec/String/BTreeMap.
safety Reserviert für Safety-Build-Constraints.
security SharedSecurityGate im UDP-Hot-Path (DDS-Security 1.2).
live-interop Cyclone-/Fast-DDS-Live-Tests gegen Lab-Hosts.
flatdata-integration Dual-Stack-Schreib-/Lesepfad über FlatStruct (ADR-0005).

Stabilität

Alle pub-Items sind ab 1.0.0 stabil; Breaking-Changes erfordern Major-Version-Bump. Doc-hidden Test-Hooks (__push_raw, __drain_pending, __push_raw_with_writer) sind interne Test-API.