Add QoS bounded queue#43
Open
mauropasse wants to merge 190 commits intoirobot-ros:irobot/add-events-executorfrom
Open
Add QoS bounded queue#43mauropasse wants to merge 190 commits intoirobot-ros:irobot/add-events-executorfrom
mauropasse wants to merge 190 commits intoirobot-ros:irobot/add-events-executorfrom
Conversation
added 30 commits
October 2, 2020 13:48
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
48416d3 to
91668ef
Compare
This file contains hidden or 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
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.