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).
§Schichten-Position
Layer 4 — Core Services. Bauend auf Layer 1 (foundation/cdr/qos/types/time-service), Layer 2 (rtps/discovery/transport-*), Layer 3 (idl/idl-rust/xml).
§Public API (Stand 1.0.0-rc.1)
DomainParticipantFactory— Singleton-Factory;create_participantspawnt eine Live-Runtime mit UDP/SPDP/SEDP/WLP,create_participant_offlinebaut einen in-process-Skeleton ohne Netzwerk fuer Unit-Tests.DomainParticipant— Top-Level-Entity; erzeugt Publishers/Subscribers/Topics, fuehrt Built-in-Type-Registry, exponiert TypeLookup-Hooks und Ignore-Filter.Publisher/DataWriter— typedWriter<T>mitDdsType- Bound; integriert RTPS-ReliableWriter (Live) bzw. In-Memory-Queue (Offline) plus Durability-Backend (DDS 1.4 §2.2.3.5).Subscriber/DataReader— typedReader<T>mittake/read/Conditions, Sample-Cache und InstanceState-Tracker (DDS 1.4 §2.2.2.5).Topic/ContentFilteredTopic/MultiTopic— Topic- Hierarchie inkl. SQL-Filter (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-Familien:
DomainParticipantQos,PublisherQos,SubscriberQos,TopicQos,DataWriterQos,DataReaderQos.
§Beispiel
use zerodds_dcps::*;
let factory = DomainParticipantFactory::instance();
// Offline-Mode fuer Doctest (kein UDP-Multicast noetig).
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 - Builtin-Subscriber — vorinstallierter Subscriber mit den 4
Builtin-Topic-Readern (DDS 1.4 §2.2.2.2.1.7
get_builtin_subscriber). - builtin_
topics - Builtin-Topic-Datentypen — DCPS-API-Sicht (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
Condition-Hierarchie +WaitSet(DDS DCPS 1.4 §2.2.2.1.6).- dds_
type DdsType— der Trait, den User-Typen erfuellen muessen, um ueber DDS verschickt zu werden.- durability_
service - Durability-Service Storage-Backend (Spec §2.2.3.5 + §2.2.3.4 TRANSIENT/PERSISTENT-Pfad).
- entity
- Entity-Lifecycle (DDS DCPS 1.4 §2.2.2.1) — gemeinsame Basis fuer
DomainParticipant,Publisher,Subscriber,Topic,DataWriter,DataReader. - error
- DCPS-Fehlertypen. An OMG DDS 1.4 §2.2.2.1
ReturnCode_tangelehnt, aber als Rust-Result<T, DdsError> — deutlich angenehmer als sprayed-error-codes. - factory
DomainParticipantFactory— Singleton fuer das Anlegen von Participants (Spec OMG DDS 1.4 §2.2.2.2.1).- instance_
handle InstanceHandle— opaker, lokaler Identifier fuer Entities und Sample-Instanzen (DDS DCPS 1.4 §2.3.3 IDL-PSM, §2.2.2.5.1 SampleInfo.instance_handle).- instance_
tracker InstanceTracker— die zentrale Buchhaltung fuer keyed Topic- Instanzen, sowohl auf der Writer- als auch auf der Reader-Seite.- interop
- Interop-Test-Typen fuer Cross-Vendor-Nachweis.
- listener
- Listener-Hierarchie (DDS DCPS 1.4 §2.2.4.2 + §2.2.2.*.3 set_listener).
- listener_
dispatch - Bubble-Up-Dispatcher fuer DCPS-Listener (Spec §2.2.4.2.3).
- metrics
- Hot-Path-Hook-Points fuer
zerodds-monitor(zerodds-monitor-1.0 §2.3). - participant
- DomainParticipant — die “Wurzel”-Entity eines DDS-Programms.
- psm_
constants - IDL-PSM-Konstanten aus DDS-DCPS 1.4 §2.3.3 (Spec).
- publisher
- Publisher + DataWriter — das Sende-Ende der DCPS-API.
- qos
- DCPS-QoS — komplette 22-Policy-Sets fuer DataWriter/DataReader/Topic/ Publisher/Subscriber/DomainParticipant gemaess DDS 1.4 §2.2.3.
- runtime
- DcpsRuntime — Event-Loop + UDP-Sockets pro DomainParticipant.
- sample
Sample<T>— Daten +SampleInfozusammen.- sample_
info SampleInfo— Metadaten pro Sample, dieDataReader::read/takemit jedem Sample mitliefern.- status
- Communication-Status-Strukturen (DDS DCPS 1.4 §2.2.4.1, Tab. 2.10).
- subscriber
- Subscriber + DataReader — das Empfangs-Ende der DCPS-API.
- time
Time_tundDuration_t(DDS-DCPS 1.4 §2.3.3 IDL-PSM).- topic
- Topic — der typed rendezvous-point zwischen DataWriter und DataReader.
- wlp
- Writer-Liveliness-Protocol (WLP) — DCPS-Runtime-Wiring.