Implement missing QoS when using intraprocess communication
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 805
- Forks
- 564
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 27
Description
Feature request
Feature description
Implement KEEP_ALL history policy with intraprocess communication (see https://github.com/ros2/rclcpp/issues/727).
Implement non-volatile durability with intraprocess communication.
Implementation considerations
For sizing the buffers when KEEP_ALL history policy is used, resource limits qos policy will be needed (https://github.com/ros2/rmw/issues/176).
For implementing TRANSIENT_LOCAL durability:
- With history keep_last, the intra_process_manager could store the last message send of each publisher. Adding a map, with
publisher_idas keys and storing a shared_ptr to the message sounds reasonable. - With history KEEP_ALL, the intra_process_manager should never pop from the internal buffer.
- When a new subscription is created with TRANSIENT_LOCAL durability, all the messages from publishers in the same topic with TRANSIENT_LOCAL durability should be delivered (depending on subscriber and publisher history policy if the last of all the messages are delivered). When the publisher history policy was keep_last, if the message is not found in the buffer (because it was popped), it should be taken from the
last_messagemap (mentioned above).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by inspecting the intra_process_manager and reading the linked issues ros2/rclcpp#727 and ros2/rmw#176. Trace how intraprocess history and durability are currently handled. Done means KEEP_ALL and non-volatile durability work for intraprocess communication, including the stated buffer, resource-limit, publisher, and new-subscription behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100