ROS 2 rclcpp + rcl - humble
humble
ROS 2 C++ Client Library with ROS Client Library
|
Public Types | |
using | MessageAllocTraits = typename SubscriptionIntraProcessBufferT::SubscribedTypeAllocatorTraits |
using | MessageAlloc = typename SubscriptionIntraProcessBufferT::SubscribedTypeAllocator |
using | ConstMessageSharedPtr = typename SubscriptionIntraProcessBufferT::ConstDataSharedPtr |
using | MessageUniquePtr = typename SubscriptionIntraProcessBufferT::SubscribedTypeUniquePtr |
using | BufferUniquePtr = typename SubscriptionIntraProcessBufferT::BufferUniquePtr |
![]() | |
using | SubscribedTypeAllocatorTraits = allocator::AllocRebind< SubscribedType, std::allocator< SubscribedType > > |
using | SubscribedTypeAllocator = typename SubscribedTypeAllocatorTraits::allocator_type |
using | SubscribedTypeDeleter = allocator::Deleter< SubscribedTypeAllocator, SubscribedType > |
using | ROSMessageTypeAllocatorTraits = allocator::AllocRebind< SubscribedType, std::allocator< SubscribedType > > |
using | ROSMessageTypeAllocator = typename ROSMessageTypeAllocatorTraits::allocator_type |
using | ROSMessageTypeDeleter = allocator::Deleter< ROSMessageTypeAllocator, SubscribedType > |
using | ConstMessageSharedPtr = std::shared_ptr< const SubscribedType > |
using | MessageUniquePtr = std::unique_ptr< SubscribedType, ROSMessageTypeDeleter > |
using | ConstDataSharedPtr = std::shared_ptr< const SubscribedType > |
using | SubscribedTypeUniquePtr = std::unique_ptr< SubscribedType, SubscribedTypeDeleter > |
using | BufferUniquePtr = typename rclcpp::experimental::buffers::IntraProcessBuffer< SubscribedType, std::allocator< SubscribedType >, SubscribedTypeDeleter >::UniquePtr |
![]() | |
using | ROSMessageTypeAllocatorTraits = allocator::AllocRebind< SubscribedType, allocator::AllocRebind< SubscribedType, std::allocator< SubscribedType > >::allocator_type > |
using | ROSMessageTypeAllocator = typename ROSMessageTypeAllocatorTraits::allocator_type |
using | ROSMessageTypeDeleter = allocator::Deleter< ROSMessageTypeAllocator, SubscribedType > |
using | ConstMessageSharedPtr = std::shared_ptr< const SubscribedType > |
using | MessageUniquePtr = std::unique_ptr< SubscribedType, ROSMessageTypeDeleter > |
![]() | |
enum class | EntityType : std::size_t { Subscription } |
Public Member Functions | |
SubscriptionIntraProcess (AnySubscriptionCallback< MessageT, Alloc > callback, std::shared_ptr< Alloc > allocator, rclcpp::Context::SharedPtr context, const std::string &topic_name, const rclcpp::QoS &qos_profile, rclcpp::IntraProcessBufferType buffer_type) | |
std::shared_ptr< void > | take_data () override |
Take the data so that it can be consumed with execute . More... | |
void | execute (std::shared_ptr< void > &data) override |
Execute data that is passed in. More... | |
![]() | |
SubscriptionIntraProcessBuffer (std::shared_ptr< std::allocator< SubscribedType > > allocator, rclcpp::Context::SharedPtr context, const std::string &topic_name, const rclcpp::QoS &qos_profile, rclcpp::IntraProcessBufferType buffer_type) | |
bool | is_ready (rcl_wait_set_t *wait_set) override |
Check if the Waitable is ready. More... | |
SubscribedTypeUniquePtr | convert_ros_message_to_subscribed_type_unique_ptr (const SubscribedType &msg) |
void | provide_intra_process_message (ConstMessageSharedPtr message) override |
void | provide_intra_process_message (MessageUniquePtr message) override |
void | provide_intra_process_data (ConstDataSharedPtr message) |
void | provide_intra_process_data (SubscribedTypeUniquePtr message) |
bool | use_take_shared_method () const override |
![]() | |
SubscriptionROSMsgIntraProcessBuffer (rclcpp::Context::SharedPtr context, const std::string &topic_name, const rclcpp::QoS &qos_profile) | |
![]() | |
RCLCPP_PUBLIC | SubscriptionIntraProcessBase (rclcpp::Context::SharedPtr context, const std::string &topic_name, const rclcpp::QoS &qos_profile) |
RCLCPP_PUBLIC size_t | get_number_of_ready_guard_conditions () override |
Get the number of ready guard_conditions. More... | |
RCLCPP_PUBLIC void | add_to_wait_set (rcl_wait_set_t *wait_set) override |
Add the Waitable to a wait set. More... | |
std::shared_ptr< void > | take_data_by_entity_id (size_t id) override |
Take the data so that it can be consumed with execute . More... | |
RCLCPP_PUBLIC const char * | get_topic_name () const |
RCLCPP_PUBLIC QoS | get_actual_qos () const |
void | set_on_ready_callback (std::function< void(size_t, int)> callback) override |
Set a callback to be called when each new message arrives. More... | |
void | clear_on_ready_callback () override |
Unset the callback registered for new messages, if any. | |
![]() | |
virtual RCLCPP_PUBLIC size_t | get_number_of_ready_subscriptions () |
Get the number of ready subscriptions. More... | |
virtual RCLCPP_PUBLIC size_t | get_number_of_ready_timers () |
Get the number of ready timers. More... | |
virtual RCLCPP_PUBLIC size_t | get_number_of_ready_clients () |
Get the number of ready clients. More... | |
virtual RCLCPP_PUBLIC size_t | get_number_of_ready_events () |
Get the number of ready events. More... | |
virtual RCLCPP_PUBLIC size_t | get_number_of_ready_services () |
Get the number of ready services. More... | |
RCLCPP_PUBLIC bool | exchange_in_use_by_wait_set_state (bool in_use_state) |
Exchange the "in use by wait set" state for this timer. More... | |
Protected Member Functions | |
template<typename T > | |
std::enable_if< std::is_same< T, rcl_serialized_message_t >::value, void >::type | execute_impl (std::shared_ptr< void > &data) |
template<class T > | |
std::enable_if<!std::is_same< T, rcl_serialized_message_t >::value, void >::type | execute_impl (std::shared_ptr< void > &data) |
![]() | |
void | trigger_guard_condition () override |
![]() | |
void | invoke_on_new_message () |
Protected Attributes | |
AnySubscriptionCallback< MessageT, Alloc > | any_callback_ |
![]() | |
BufferUniquePtr | buffer_ |
SubscribedTypeAllocator | subscribed_type_allocator_ |
SubscribedTypeDeleter | subscribed_type_deleter_ |
![]() | |
std::recursive_mutex | callback_mutex_ |
std::function< void(size_t)> | on_new_message_callback_ {nullptr} |
size_t | unread_count_ {0} |
rclcpp::GuardCondition | gc_ |
Definition at line 49 of file subscription_intra_process.hpp.
|
inlineoverridevirtual |
Execute data that is passed in.
Before calling this method, the Waitable should be added to a wait set, waited on, and then updated - and the take_data
method should be called.
Example usage:
Implements rclcpp::experimental::SubscriptionIntraProcessBase.
Definition at line 135 of file subscription_intra_process.hpp.
|
inlineoverridevirtual |
Take the data so that it can be consumed with execute
.
NOTE: take_data is a partial fix to a larger design issue with the multithreaded executor. This method is likely to be removed when a more permanent fix is implemented. A longterm fix is currently being discussed here: https://github.com/ros2/rclcpp/pull/1276
This method takes the data from the underlying data structure and writes it to the void shared pointer data
that is passed into the method. The data
can then be executed with the execute
method.
Before calling this method, the Waitable should be added to a wait set, waited on, and then updated.
Example usage:
Implements rclcpp::experimental::SubscriptionIntraProcessBase.
Definition at line 105 of file subscription_intra_process.hpp.