Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a DDSI-specific MIME type as encoding, optionally including the DDS topic type #118

Open
JEnoch opened this issue Feb 22, 2023 · 0 comments

Comments

@JEnoch
Copy link
Member

JEnoch commented Feb 22, 2023

Describe the feature

Currently the plugin re-publish DDS payloads over Zenoh without any encoding (i.e. KnownEncoding::Empty == "").
For a subscriber or a storage, this doesn't give any indication on the the payload format and how to decode it.

The bridge should set the Zenoh Sample's encoding to a MIME type reflecting its encoding.
The encoding of a DDS type received via the DDSI protocol is specified in §10 of the DDSI-RTPS specification.
The payload receives from DDSI and forwarded to Zenoh includes the 2 RepresentionIdentifier bytes. It might not always be CDR-encoded. Therefore, the name for the mime-type cannot be just "cdr", but shall contain "ddsi".

In order to use a MIME type which is compliant with IETF recommandations and eventually registered to IANA, it should follow the RFC 6838 best practices.
Thus, I suggest application/vnd.ddsi as a MIME type.
This MIME type shall be registered as KnownEncoding in Zenoh (https://github.com/eclipse-zenoh/zenoh/blob/0.7.0-rc/commons/zenoh-protocol-core/src/encoding.rs#L19-L69)

This MIME type could be completed with a DDS type name as a suffix. E.g.:

  • application/vnd.ddsi+HelloWorld
  • application/vnd.ddsi+geometry_msgs::msg::dds_::Twist (ROS2 Twist type)

As this type name addition introduces an overhead for each publication, it's addition shall not be active by default, but only via configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant