2.6 KiB
RustDDS 0.14.3, vendored for flowRS
RustDDS (https://github.com/Atostek/RustDDS) is Atostek's pure-Rust DDS, licensed under the
Apache License 2.0 (LICENSE.md, unchanged). This directory is the crates.io package
rustdds-0.14.3 (src/, README.md, LICENSE.md, rustfmt.toml, and Cargo's normalized
Cargo.toml with its example and test targets removed, since their sources are not copied, and
a cargo-machete ignore list for two dependencies it declares and flowRS's build does not use).
flowRS's generated ROS 2 nodes run on it through ros2-client 0.11.1; the workspace
Cargo.toml (and every generated node's, and tools/perfbench's) points rustdds here with
[patch.crates-io].
The first commit that adds this directory adds the package unchanged. Every change since is listed below, and each changed file says so at its top (Apache-2.0 §4(b)).
Changes
- Endpoints announce DDS USER_DATA (
src/dds/participant.rs,src/discovery/sedp_messages.rs,src/discovery/discovery_db.rs). 0.14.3 parsed a remote endpoint's USER_DATA but never sent one for its own, so a ROS 2 node onros2-clientcould not advertise its RIHS01 type hash andros2 topic info -vshowed it as INVALID.DomainParticipant::set_endpoint_user_data(topic, writer, data)records the USER_DATA the participant's DataWriters (or DataReaders) on a topic announce; the local writer's and reader's discovery records take it, and SEDP serializes it asPID_USER_DATA(a CDRsequence<octet>, sent only when set). flowRS setstypehash=RIHS01_…;, whatrmw_dds_common::encode_type_hash_for_user_data_qoswrites. - A remote endpoint's USER_DATA is read as its octets (
sedp_messages.rs): 0.14.3 handed up the parameter's raw bytes, the CDR count included, sotypehash=followed four bytes of length and no reader matched it. The count is now taken off (a value too short for its count is kept whole). - A discovered reader keeps the loopback locators it advertised (
sedp_messages.rs,From<RtpsReaderProxy> for ReaderProxy).RtpsReaderProxykeeps loopback locators in a bucket of their own, used only once the peer is confirmed to be on this host; the conversion back into the discovery record dropped the bucket. A reader reachable at a loopback address alone (Cyclone DDS pinned tolo: 127.0.0.1, its own or its participant's default locator) was left with no locator at all, so a RustDDS writer matched it and sent it nothing: on Lyrical with Cyclone onlo, ROS to the node worked and the node to ROS did not. The record now carries the advertised list whole, and the proxy built from it splits it again.