forked from ros2/rclcpp
-
Notifications
You must be signed in to change notification settings - Fork 2
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 QoS bounded queue #43
Open
mauropasse
wants to merge
190
commits into
irobot-ros:irobot/add-events-executor
Choose a base branch
from
mauropasse:mauro/add-qos-bounded-queue
base: irobot/add-events-executor
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Add QoS bounded queue #43
mauropasse
wants to merge
190
commits into
irobot-ros:irobot/add-events-executor
from
mauropasse:mauro/add-qos-bounded-queue
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
error: deallocuse - Dereferencing 'node_ptr' after it is deallocated / released Seems that: NodeBaseInterface::WeakPtr node_weak_ptr(node_ptr); causes the cppcheck to fail if node_ptr is used after creating the weak pointer from it.
Reorder APIs arguments
…ss-2 Add events queue abstract class and implem
rename rmw_listener_cb_t->rmw_listener_callback_t
Implement no-op on IPC subscription
irobot-ros
force-pushed
the
irobot/add-events-executor
branch
2 times, most recently
from
March 16, 2021 11:22
48416d3
to
91668ef
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is not intended to be merged, but could be useful for discussing a bounded queue design & implementation.
This QoS bounded queue has a limit set on construction, for example 100 elements. When we surpase this limit, we prune the queue.
The pruning is based on the QoS->depth of each entity event in the queue, so if we had for example 20 events from an entity with QoS->depth=10, we remove the 10 oldest events.
This implies having QoS->depth defined for each entity, as Waitables, which is not conceptually correct.
Also we need new APIs to map each entity with their depths.
After pruning, we might still have more events in the queue than the limit set, if the QoS->depth of an entity is bigger than the queue limit.
If we don't take into account the QoS->depth of each entity, and for example we prune the queue by removing all elements, we'll be behind the DDS queues (like IPC ring buffer) and new events will retrieve older messages. So in order to prune the queue without taking into account QoS, we should be able to also prune the DDS internal queues.