15 #ifndef RCLCPP__MEMORY_STRATEGY_HPP_
16 #define RCLCPP__MEMORY_STRATEGY_HPP_
25 #include "rclcpp/any_executable.hpp"
26 #include "rclcpp/macros.hpp"
27 #include "rclcpp/node_interfaces/node_base_interface.hpp"
28 #include "rclcpp/visibility_control.hpp"
29 #include "rclcpp/waitable.hpp"
33 namespace memory_strategy
46 using WeakCallbackGroupsToNodesMap = std::map<rclcpp::CallbackGroup::WeakPtr,
47 rclcpp::node_interfaces::NodeBaseInterface::WeakPtr,
48 std::owner_less<rclcpp::CallbackGroup::WeakPtr>>;
52 virtual bool collect_entities(
const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes) = 0;
54 virtual size_t number_of_ready_subscriptions()
const = 0;
55 virtual size_t number_of_ready_services()
const = 0;
56 virtual size_t number_of_ready_clients()
const = 0;
57 virtual size_t number_of_ready_events()
const = 0;
58 virtual size_t number_of_ready_timers()
const = 0;
59 virtual size_t number_of_guard_conditions()
const = 0;
60 virtual size_t number_of_waitables()
const = 0;
62 virtual void add_waitable_handle(
const rclcpp::Waitable::SharedPtr & waitable) = 0;
63 virtual bool add_handles_to_wait_set(
rcl_wait_set_t * wait_set) = 0;
64 virtual void clear_handles() = 0;
74 get_next_subscription(
76 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes) = 0;
81 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes) = 0;
86 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes) = 0;
91 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes) = 0;
96 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes) = 0;
101 static rclcpp::SubscriptionBase::SharedPtr
102 get_subscription_by_handle(
103 const std::shared_ptr<const rcl_subscription_t> & subscriber_handle,
104 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
106 static rclcpp::ServiceBase::SharedPtr
107 get_service_by_handle(
108 const std::shared_ptr<const rcl_service_t> & service_handle,
109 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
111 static rclcpp::ClientBase::SharedPtr
112 get_client_by_handle(
113 const std::shared_ptr<const rcl_client_t> & client_handle,
114 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
116 static rclcpp::TimerBase::SharedPtr
118 const std::shared_ptr<const rcl_timer_t> & timer_handle,
119 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
121 static rclcpp::node_interfaces::NodeBaseInterface::SharedPtr
123 const rclcpp::CallbackGroup::SharedPtr & group,
124 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
126 static rclcpp::CallbackGroup::SharedPtr
127 get_group_by_subscription(
128 const rclcpp::SubscriptionBase::SharedPtr & subscription,
129 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
131 static rclcpp::CallbackGroup::SharedPtr
132 get_group_by_service(
133 const rclcpp::ServiceBase::SharedPtr & service,
134 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
136 static rclcpp::CallbackGroup::SharedPtr
138 const rclcpp::ClientBase::SharedPtr & client,
139 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
141 static rclcpp::CallbackGroup::SharedPtr
143 const rclcpp::TimerBase::SharedPtr & timer,
144 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
146 static rclcpp::CallbackGroup::SharedPtr
147 get_group_by_waitable(
148 const rclcpp::Waitable::SharedPtr & waitable,
149 const WeakCallbackGroupsToNodesMap & weak_groups_to_nodes);
rcutils_allocator_t rcl_allocator_t
Encapsulation of an allocator.
A condition that can be waited on in a single wait set and asynchronously triggered.
Delegate for handling memory allocations while the Executor is executing.
Versions of rosidl_typesupport_cpp::get_message_type_support_handle that handle adapted types.
Container for subscription's, guard condition's, etc to be waited on.