Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Rust Binding for Eclipse Cyclone DDS
The official Rust binding for Eclipse Cyclone DDS.
Quick Start
Install the C library and headers to your system path or use the bundled-sources
via the vendored feature. Then add the package to your Cargo.toml via:
[]
# This expects you to have an installation of the Cyclone DDS C library available
# which allows you to tailor the underlying C library as you wish.
#
# NOTE: you can also point to Cyclone DDS using the `CYCLONEDDS_HOME` variable if
# performing a full installation is undesirable.
= "0.0.1"
# Using the `vendored` feature will result in us compiling and linking in a version
# of Cyclone DDS for you.
= { = "0.0.1", = ["vendored"] }
Then see the example and the docs to get started.
Overview of DDS
The Data Distribution Service (DDS) is a publish-subscribe middleware standard for real-time, data-centric communication. It is used in a variety of mission critical applications in domains such as aerospace, defense, autonomous systems (e.g. vehicles, robotics), industrial control, smart energy grids, transportation, simulation, and medical devices.
Participants
within a specific
Domain
discover each other automatically via the DDSI/RTPS discovery protocol. Once two
endpoints sharing the same topic name, type information, and compatible
Quality of Service (QoS)
discover each other, the middleware establishes a connection between them.
Publishers
and
Subscribers
allow you to group
Writers
and
Readers
respectively to allow you to set their collective behavior. These
Writers
and
Readers
exchange typed samples via
Topics.
DOMAIN
│
┌──────────────────┴──────────────────┐
│ │
PARTICIPANT PARTICIPANT
│ T ≡ struct Position {x, y} │
┌────┴────┐ ┌────┴────┐
│ │ │ │
PUBLISHER TOPIC<T> ═══════════════════ TOPIC<T> SUBSCRIBER
│ ║ ║ │
│ "Position" "Position" │
│ ║ ║ │
WRITER<T> ═══╝ ╚═══ READER<T>
╰───────── matched via Topic<T> ─────────╯
Node 01 Node 02
───────── ─────────
Data delivery characteristics, such as how samples are buffered, retransmitted,
and received, are controlled via
Quality of Service,
a collection of
QoS policies
that configure characteristics such as:
durability(whether late-joining readers receive historical samples)reliability(best-effort vs reliable delivery)history depth(the number of samples to store in history)deadline(whether a signal should be generated when a sample is not received within a specified period) Policies are set independently on the writer and reader side, and compatibility is checked at discovery time. A writer's offeredQoSmust be compatible with a reader's requestedQoSfor the two endpoints to match.
There are a variety of other elements to the DDS API such as:
WaitSets: to allow you to block until a particular status occurs on a DDS entity.Listeners: to notify applications of a change in the status of a particular entity.GuardConditions,StatusConditions,ReadConditions, andQueryConditions: Mechanisms to trigger the condition associated with a waitset.
See the DDS Specification and the OMG DDS Wiki for these other elements and see the Rust Documentation for what is supported by this API.
Example
use QoS;
use policy;
use View;
use ;
Minimum supported Rust version (MSRV)
For now, the MSRV is the latest stable Rust version at the time of release.