Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions source/Tutorials/Advanced/Creating-An-RMW-Implementation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -455,8 +455,11 @@ These tests can use ``rmw``'s ``rmw_get_implementation_identifier()`` `function
Middleware- and ``rmw`` implementation-specific configuration
-------------------------------------------------------------

The ``rmw`` interface as defined by that package does not support passing arbitrary configuration data to the implementation or the underlying middleware.
To get around that and introduce some flexibility, some implementations use environment variables: ``RMW_FASTRTPS_*``, ``RMW_CONNEXT_*``, etc.
The ``rmw`` interface allows providing arbitrary implementation-specific configuration payloads for publishers and subscriptions through the type-erased ``rmw_specific_publisher_payload`` / ``rmw_specific_subscription_payload`` fields in ``rmw_publisher_options_t`` / ``rmw_subscription_options_t``.
This is set by users through ``RMWImplementationSpecificPublisherPayload`` / ``RMWImplementationSpecificSubscriptionPayload`` in ``rclcpp``, for example.
This is an advanced, non-portable feature that is not currently used by any (tier 1) implementations.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought it was interesting to point out that this is currently not used by any common/tier 1 implementation, just to discourage people from using it, but I'm open to removing that part of the sentence.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO this can stay here as it is implemented. to be honest, i did not even know this interface to pass any payload to the rmw... thanks for pointing that out 👍


For a bit more flexibility, some implementations use environment variables: ``RMW_FASTRTPS_*``, ``RMW_CONNEXT_*``, etc.
The underlying middleware may also be configurable through environment variables: ``FASTDDS_*``, ``ZENOH_*``, ``CYCLONEDDS_*``, ``EMAIL_*``, etc.
For example, the ``CYCLONEDDS_URI``, ``FASTDDS_DEFAULT_PROFILES_FILE``, and ``ZENOH_SESSION_CONFIG_URI`` environment variables can be used to provide a path to a full configuration file if the relevant middleware is used.

Expand Down