Expand description
Crate zerodds-dcps. Safety classification: STANDARD.
DCPS Public API (OMG DDS 1.4 §2.2.2): DomainParticipant,
Publisher, Subscriber, Topic, DataWriter, DataReader.
Spec: OMG DDS 1.4 §2.2 (Data-Centric Publish-Subscribe Module) + DDSI-RTPS 2.5 §8.5 (Discovery + WLP) + XTypes 1.3 §7.6.3 (TypeLookup service wiring).
§Layer position
Layer 4 — Core Services. Built on Layer 1 (foundation/cdr/qos/types/time-service), Layer 2 (rtps/discovery/transport-*), Layer 3 (idl/idl-rust/xml).
§Public API (as of 1.0.0-rc.1)
DomainParticipantFactory— singleton factory;create_participantspawns a live runtime with UDP/SPDP/SEDP/WLP,create_participant_offlinebuilds an in-process skeleton without networking for unit tests.DomainParticipant— top-level entity; creates publishers/subscribers/topics, maintains the built-in type registry, exposes TypeLookup hooks and ignore filters.Publisher/DataWriter— typedWriter<T>with aDdsTypebound; integrates the RTPS ReliableWriter (live) or an in-memory queue (offline) plus the durability backend (DDS 1.4 §2.2.3.5).Subscriber/DataReader— typedReader<T>withtake/read/conditions, sample cache and InstanceState tracker (DDS 1.4 §2.2.2.5).Topic/ContentFilteredTopic/MultiTopic— the topic hierarchy incl. SQL filters (DDS 1.4 §2.2.2.3).- Builtin topics:
BuiltinSubscriber+DcpsParticipantBuiltinTopicData/DcpsPublicationBuiltinTopicData/DcpsSubscriptionBuiltinTopicData/DcpsTopicBuiltinTopicData(DDS 1.4 §2.2.5). - Conditions/WaitSet:
Condition/ReadCondition/QueryCondition/GuardCondition/WaitSet. - QoS families:
DomainParticipantQos,PublisherQos,SubscriberQos,TopicQos,DataWriterQos,DataReaderQos.
§Example
use zerodds_dcps::*;
let factory = DomainParticipantFactory::instance();
// Offline mode for the doctest (no UDP multicast needed).
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");Re-exports§
pub use builtin_subscriber::BuiltinSinks;pub use builtin_subscriber::BuiltinSubscriber;pub use builtin_subscriber::BuiltinTopic;pub use builtin_subscriber::builtin_reader_qos;pub use builtin_topics::ParticipantBuiltinTopicData as DcpsParticipantBuiltinTopicData;pub use builtin_topics::PublicationBuiltinTopicData as DcpsPublicationBuiltinTopicData;pub use builtin_topics::SubscriptionBuiltinTopicData as DcpsSubscriptionBuiltinTopicData;pub use builtin_topics::TOPIC_NAME_DCPS_PARTICIPANT;pub use builtin_topics::TOPIC_NAME_DCPS_PUBLICATION;pub use builtin_topics::TOPIC_NAME_DCPS_SUBSCRIPTION;pub use builtin_topics::TOPIC_NAME_DCPS_TOPIC;pub use builtin_topics::TopicBuiltinTopicData as DcpsTopicBuiltinTopicData;pub use dds_type::DdsType;pub use dds_type::DdsTypeRow;pub use dds_type::DecodeError;pub use dds_type::EncodeError;pub use dds_type::Extensibility;pub use dds_type::ExtensibilityKind;pub use dds_type::RawBytes;pub use entity::Entity;pub use entity::EntityState;pub use entity::StatusCondition;pub use entity::StatusMask;pub use entity::immutable_if_enabled;pub use coherent_set::CoherentScope;pub use coherent_set::CoherentSetMarker;pub use coherent_set::GroupAccessScope;pub use condition::Condition;pub use condition::GuardCondition;pub use condition::QueryCondition;pub use condition::ReadCondition;pub use condition::WaitSet;pub use error::DdsError;pub use error::Result;pub use factory::DomainParticipantFactory;pub use instance_handle::HANDLE_NIL;pub use instance_handle::InstanceHandle;pub use instance_handle::InstanceHandleAllocator;pub use instance_tracker::InstanceState;pub use instance_tracker::InstanceTracker;pub use instance_tracker::KeyHash;pub use participant::IgnoreFilter;pub use participant::DomainId;pub use participant::DomainParticipant;pub use publisher::DataWriter;pub use publisher::Publisher;pub use qos::DataReaderQos;pub use qos::DataWriterQos;pub use qos::DomainParticipantQos;pub use qos::PublisherQos;pub use qos::SubscriberQos;pub use qos::TopicQos;pub use sample::Sample;pub use sample_info::InstanceStateKind;pub use sample_info::SampleInfo;pub use sample_info::SampleStateKind;pub use sample_info::ViewStateKind;pub use sample_info::instance_state_mask;pub use sample_info::sample_state_mask;pub use sample_info::view_state_mask;pub use subscriber::DataReader;pub use subscriber::Subscriber;pub use time::Duration;pub use time::Time;pub use time::get_current_time;pub use topic::hash_join_two;pub use topic::ContentFilteredTopic;pub use topic::JoinedRow;pub use topic::MultiTopic;pub use topic::Topic;pub use topic::TopicDescription;pub use topic::TopicDescriptionHandle;
Modules§
- builtin_
subscriber - Built-in subscriber — preinstalled subscriber with the 4
built-in-topic readers (DDS 1.4 §2.2.2.2.1.7
get_builtin_subscriber). - builtin_
topics - Built-in-topic data types — DCPS API view (DDS 1.4 §2.2.5).
- coherent_
set - Coherent sets + group access (DDS DCPS 1.4 §2.2.2.4.1.8-11, §2.2.2.5.2.8-11, §2.2.2.5.3.32; DDSI-RTPS 2.5 §9.6.4.2/3/4).
- condition
Conditionhierarchy +WaitSet(DDS DCPS 1.4 §2.2.2.1.6).- dds_
type DdsType— the trait that user types must implement to be sent over DDS.- durability_
service - Durability-service storage backend (Spec §2.2.3.5 + §2.2.3.4 TRANSIENT/PERSISTENT path).
- entity
- Entity lifecycle (DDS DCPS 1.4 §2.2.2.1) — common base for
DomainParticipant,Publisher,Subscriber,Topic,DataWriter,DataReader. - error
- DCPS error types. Modeled on OMG DDS 1.4 §2.2.2.1
ReturnCode_t, but as a RustResult<T, DdsError>— considerably nicer than sprayed error codes. - factory
DomainParticipantFactory— singleton for creating participants (Spec OMG DDS 1.4 §2.2.2.2.1).- instance_
handle InstanceHandle— opaque, local identifier for entities and sample instances (DDS DCPS 1.4 §2.3.3 IDL-PSM, §2.2.2.5.1 SampleInfo.instance_handle).- instance_
tracker InstanceTracker— the central bookkeeping for keyed topic instances, on both the writer and the reader side.- interop
- Interop test types for cross-vendor verification.
- layered_
transport - Preference-ordered multi-transport for user traffic (SHM + UDP fallback).
LayeredUserTransport— a preference-ordered multi-transport for user traffic. - listener
- Listener hierarchy (DDS DCPS 1.4 §2.2.4.2 + §2.2.2.*.3 set_listener).
- listener_
dispatch - Bubble-up dispatcher for DCPS listeners (Spec §2.2.4.2.3).
- metrics
- Hot-path hook points for
zerodds-monitor(zerodds-monitor-1.1 §2.3). - participant
- DomainParticipant — the “root” entity of a DDS program.
- psm_
constants - IDL-PSM constants from DDS-DCPS 1.4 §2.3.3 (Spec).
- publisher
- Publisher + DataWriter — the send end of the DCPS API.
- qos
- DCPS QoS — complete 22-policy sets for DataWriter/DataReader/Topic/ Publisher/Subscriber/DomainParticipant per DDS 1.4 §2.2.3.
- runtime
- DcpsRuntime — event loop + UDP sockets per DomainParticipant.
- same_
host - Same-host tracker for Wave 4 of the zero-copy roadmap
(Spec
docs/specs/zerodds-zero-copy-1.0.md§6 Wave 3). - sample
Sample<T>— data +SampleInfotogether.- sample_
bytes SampleBytes— zero-copy byte container for reader-path samples.- sample_
info SampleInfo— per-sample metadata thatDataReader::read/takedeliver alongside each sample.- scheduler
- D.5e Phase 3 — deadline-heap scheduler (event-driven replacement for the fixed-period tick poll). Std-only (mpsc channel + Instant park). D.5e Phase 3 — deadline-heap scheduler.
- status
- Communication status structures (DDS DCPS 1.4 §2.2.4.1, Table 2.10).
- subscriber
- Subscriber + DataReader — the receive end of the DCPS API.
- time
Time_tandDuration_t(DDS-DCPS 1.4 §2.3.3 IDL PSM).- topic
- Topic — the typed rendezvous point between DataWriter and DataReader.
- wlp
- Writer Liveliness Protocol (WLP) — DCPS runtime wiring.