15 #ifndef RCLCPP__STRATEGIES__MESSAGE_POOL_MEMORY_STRATEGY_HPP_ 16 #define RCLCPP__STRATEGIES__MESSAGE_POOL_MEMORY_STRATEGY_HPP_ 28 namespace message_pool_memory_strategy
42 rosidl_generator_traits::has_fixed_size<MessageT>::value
55 for (
size_t i = 0; i < Size; ++i) {
56 pool_[i].msg_ptr_ = std::make_shared<MessageT>();
57 pool_[i].used =
false;
71 if (
pool_[current_index].used) {
74 pool_[current_index].msg_ptr_->~MessageT();
75 new (
pool_[current_index].msg_ptr_.get())MessageT;
77 pool_[current_index].used =
true;
78 return pool_[current_index].msg_ptr_;
88 for (
size_t i = 0; i < Size; ++i) {
89 if (
pool_[i].msg_ptr_ == msg) {
90 pool_[i].used =
false;
112 #endif // RCLCPP__STRATEGIES__MESSAGE_POOL_MEMORY_STRATEGY_HPP_ std::shared_ptr< MessageT > msg_ptr_
Definition: message_pool_memory_strategy.hpp:100
Definition: message_pool_memory_strategy.hpp:98
Completely static memory allocation strategy for messages.
Definition: message_pool_memory_strategy.hpp:45
bool used
Definition: message_pool_memory_strategy.hpp:101
Definition: allocator_common.hpp:24
size_t next_array_index_
Definition: message_pool_memory_strategy.hpp:105
std::shared_ptr< MessageT > borrow_message()
Borrow a message from the message pool.
Definition: message_pool_memory_strategy.hpp:67
#define RCLCPP_SMART_PTR_DEFINITIONS(...)
Definition: macros.hpp:36
void return_message(std::shared_ptr< MessageT > &msg)
Return a message to the message pool.
Definition: message_pool_memory_strategy.hpp:86
Default allocation strategy for messages received by subscriptions.
Definition: message_memory_strategy.hpp:33
std::array< PoolMember, Size > pool_
Definition: message_pool_memory_strategy.hpp:104