-
Notifications
You must be signed in to change notification settings - Fork 790
Description
Description
No long detailed description this time, unfortunately...
This issue describes and lists the relevant PRs that build on top of the PRs in #1374 with non-essential, bonus changes for ease of review and decoupling.
The base PRs should be prioritized.
The PRs in #1374 assumed that most of the objects being introduced can only live on the heap, but this wave of PRs allows those objects to be created on the stack and then initialized.
The changes here are namely refactors across the entire stack for function signatures to take in allocators, and splitting of create()
functions into init()
and create()
(likewise for destroy into fini()
and destroy()
.)
That is, splitting the steps of:
- Allocating an outer struct (create/new)
- Allocating and initializing the internal members of that struct (init)
And similarly for destruction:
- Deallocating the outer struct (delete/destroy)
- Deallocating and finalizing the internal members of that struct (fini)
NOTE
These changes will be occurring mostly in the rmw and rosidl layers
Relevant PRs
- Add convenience error handling macros rcutils#421
- Dynamic Subscription (BONUS: Allocators): rosidl rosidl#737
- Dynamic Subscription (BONUS: Allocators): rosidl_dynamic_typesupport rosidl_dynamic_typesupport#2
- Dynamic Subscription (BONUS: Allocators): rosidl_dynamic_typesupport_fastrtps rosidl_dynamic_typesupport_fastrtps#3
- Dynamic Subscription (BONUS: Allocators): rmw rmw#353
-
Dynamic Subscription (BONUS: Allocators): rclcpp rclcpp#2160 - Dynamic Subscription (BONUS: Allocators): rcl rcl#1057
- RMWs (must be merged together)
- Dynamic Subscription (BONUS: Allocators): rmw_implementation rmw_implementation#219
- Dynamic Subscription (BONUS: Allocators): rmw_connextdds rmw_connextdds#115
- Dynamic Subscription (BONUS: Allocators): rmw_cyclonedds rmw_cyclonedds#451
- Dynamic Subscription (BONUS: Allocators): rmw_fastrtps rmw_fastrtps#687
TODOs
I might not get all of them, but wow am I going to try:
(Note: Edits in each lower level struct will need changes propagated upwards, but the higher level structs are what users are more likely to interact with.)
- Message Type Support
- rosidl_message_type_support_t
- rosidl_dynamic_message_type_support_impl_t
- Dynamic Type Support
- rosidl_dynamic_typesupport_serialization_support_t
- getting this in means all dynamic typesupport types will have access to a user-configured allocator via their composed serialization supports (but doesn't yet unlock the ability to have independent allocators from the serialization support)
- rosidl_dynamic_typesupport_dynamic_type_t
- rosidl_dynamic_typesupport_dynamic_type_builder_t
- rosidl_dynamic_typesupport_dynamic_data_t
- rosidl_dynamic_typesupport_serialization_support_t
-
Dynamic Type Support Impls (Do these even make sense to take allocators? 🤔 I don't think I will support them)-
rosidl_dynamic_typesupport_serialization_support_impl_t -
rosidl_dynamic_typesupport_dynamic_type_impl_t -
rosidl_dynamic_typesupport_dynamic_type_builder_impl_t -
rosidl_dynamic_typesupport_dynamic_data_impl_t
-
- Type Description Utils
- This is a whole bunch of stuff... I might not get to this
-
rclcpp (I'm not even going to think about this one yet)- But for my reference... https://github.com/ros2/rclcpp/blob/rolling/rclcpp/include/rclcpp/subscription_options.hpp
Metadata
Metadata
Assignees
Labels
Type
Projects
Status