zerodds-dcps
DCPS public API (OMG DDS 1.4 §2.2.2) for the ZeroDDS stack. Live runtime with SPDP/SEDP/WLP, built-in topics, TypeLookup service, durability backend, conditions and WaitSet. Safety classification: STANDARD.
Spec mapping
| Spec | Section |
|---|---|
| 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 (type consistency) |
What's inside
- Entity hierarchy —
DomainParticipantFactoryas a singleton,DomainParticipantas the root, below itPublisher/DataWriterandSubscriber/DataReader. - Typed writer/reader —
DataWriter<T>/DataReader<T>with aDdsTypebound. End users implementDdsTypeby hand or viazerodds-idl-rustcodegen. - Topics —
Topic<T>plusContentFilteredTopic(SQL92 filter) andMultiTopic(hash join). - Built-in topics —
DCPSParticipant,DCPSTopic,DCPSPublication,DCPSSubscription(DDS 1.4 §2.2.5). - Full QoS coverage — all 22 spec policies, including the exclusive-ownership filter in the sample delivery path and the time-based filter.
- Discovery + TypeLookup — the live runtime spawns SPDP/SEDP/WLP/ TypeLookup endpoints; cross-vendor interop verified against Cyclone DDS and Fast-DDS.
- Durability — transient in-memory and persistent on-disk backends with a sequence-ordered replay list.
- Conditions/WaitSet —
ReadCondition,QueryCondition,GuardCondition,StatusConditionandWaitSet. - Security hook — the opt-in
securityfeature stretches theSharedSecurityGateover the UDP hot path (DDS-Security 1.2).
Layer position
Layer 4 — core services. Built on layer 1
(zerodds-foundation, -cdr, -qos, -types, -time-service),
layer 2 (-rtps, -discovery, -transport-*) and layer 3
(-idl, -idl-rust, -xml).
Quickstart
use *;
let factory = instance;
// Live mode: spawns the runtime, binds UDP sockets, runs SPDP/SEDP.
// (Here `_offline` for doctest reproducibility.)
let participant = factory.create_participant_offline;
let topic = participant
.
.expect;
let publisher = participant.create_publisher;
let writer = publisher
.
.expect;
writer.write.expect;
Feature flags
| Feature | Default | Purpose |
|---|---|---|
std |
✅ | Enables the live runtime, threads, UDP sockets, conditions/WaitSet, durability backends. Implies alloc. |
alloc |
✅ (via std) |
Mandatory: Vec/String/BTreeMap. |
safety |
❌ | Reserved for future safety build constraints. |
security |
❌ | Enables the SharedSecurityGate in the UDP hot path (DDS-Security 1.2). |
live-interop |
❌ | Enables Cyclone DDS / Fast-DDS live tests against lab hosts. |
flatdata-integration |
❌ | ADR-0005: opt-in dual-stack write/read path via FlatStruct. |
inspect |
❌ | Embargoed: PDE Reality-Inspector tap hooks. Removed in the public mirror. |
Stability
All pub items are stable from 1.0.0 onward; breaking changes
require a major-version bump. The doc-hidden __push_raw/__drain_pending
hooks are internal test API and not stable.
Tests
License
Apache-2.0. See LICENSE.
See also
docs/architecture/02_architecture.md— layered architecturedocs/architecture/04_safety_by_architecture.md— safety classificationdocs/spec-coverage/dds-1.4.md— spec-coverage table