Template Class MessagePoolMemoryStrategy

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

template<typename MessageT, size_t Size, typename std::enable_if<rosidl_generator_traits::has_fixed_size<MessageT>::value>::type* = nullptr>
class MessagePoolMemoryStrategy : public rclcpp::message_memory_strategy::MessageMemoryStrategy<MessageT>

Completely static memory allocation strategy for messages.

Templated on the type of message pooled by this class and the size of the message pool. Templating allows the program to determine the memory required for this object at compile time. The size of the message pool should be at least the largest number of concurrent accesses to the subscription (usually the number of threads).

Public Functions

inline MessagePoolMemoryStrategy()

Default constructor.

inline virtual std::shared_ptr<MessageT> borrow_message()

Borrow a message from the message pool.

Manage the message pool ring buffer. Throw an exception if the next message was not available.

Returns:

Shared pointer to the borrowed message.

inline virtual void return_message(std::shared_ptr<MessageT> &msg)

Return a message to the message pool.

Manage metadata in the message pool ring buffer to release the message.

Parameters:

msg[in] Shared pointer to the message to return.

Protected Attributes

std::array<PoolMember, Size> pool_
size_t next_array_index_
struct PoolMember

Public Members

std::shared_ptr<MessageT> msg_ptr_
bool used