ROS 2 rclcpp + rcl - humble  humble
ROS 2 C++ Client Library with ROS Client Library
subscription.h
Go to the documentation of this file.
1 // Copyright 2015 Open Source Robotics Foundation, Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
16 
17 #ifndef RCL__SUBSCRIPTION_H_
18 #define RCL__SUBSCRIPTION_H_
19 
20 #ifdef __cplusplus
21 extern "C"
22 {
23 #endif
24 
25 #include "rosidl_runtime_c/message_type_support_struct.h"
26 
27 #include "rcl/event_callback.h"
28 #include "rcl/macros.h"
29 #include "rcl/node.h"
30 #include "rcl/visibility_control.h"
31 
32 #include "rmw/message_sequence.h"
33 
36 
38 typedef struct rcl_subscription_s
39 {
43 
46 {
48  rmw_qos_profile_t qos;
50 
53  rmw_subscription_options_t rmw_subscription_options;
55 
57 {
58  rmw_subscription_content_filter_options_t rmw_subscription_content_filter_options;
60 
62 
66 RCL_PUBLIC
67 RCL_WARN_UNUSED
70 
72 
160 RCL_PUBLIC
161 RCL_WARN_UNUSED
162 rcl_ret_t
164  rcl_subscription_t * subscription,
165  const rcl_node_t * node,
166  const rosidl_message_type_support_t * type_support,
167  const char * topic_name,
168  const rcl_subscription_options_t * options
169 );
170 
172 
197 RCL_PUBLIC
198 RCL_WARN_UNUSED
199 rcl_ret_t
200 rcl_subscription_fini(rcl_subscription_t * subscription, rcl_node_t * node);
201 
203 
212 RCL_PUBLIC
213 RCL_WARN_UNUSED
216 
218 
232 RCL_PUBLIC
233 RCL_WARN_UNUSED
234 rcl_ret_t
236 
238 
258 RCL_PUBLIC
259 RCL_WARN_UNUSED
260 rcl_ret_t
262  const char * filter_expression,
263  size_t expression_parameters_argc,
264  const char * expression_parameter_argv[],
265  rcl_subscription_options_t * options);
266 
268 RCL_PUBLIC
269 RCL_WARN_UNUSED
272 
274 
297 RCL_PUBLIC
298 RCL_WARN_UNUSED
299 rcl_ret_t
301  const rcl_subscription_t * subscription,
302  const char * filter_expression,
303  size_t expression_parameters_argc,
304  const char * expression_parameter_argv[],
306 
308 
331 RCL_PUBLIC
332 RCL_WARN_UNUSED
333 rcl_ret_t
335  const rcl_subscription_t * subscription,
336  const char * filter_expression,
337  size_t expression_parameters_argc,
338  const char * expression_parameter_argv[],
340 
342 
358 RCL_PUBLIC
359 RCL_WARN_UNUSED
360 rcl_ret_t
362  const rcl_subscription_t * subscription,
364 
366 
371 RCL_PUBLIC
372 RCL_WARN_UNUSED
373 bool
375 
377 
397 RCL_PUBLIC
398 RCL_WARN_UNUSED
399 rcl_ret_t
401  const rcl_subscription_t * subscription,
403 );
404 
406 
428 RCL_PUBLIC
429 RCL_WARN_UNUSED
430 rcl_ret_t
432  const rcl_subscription_t * subscription,
434 );
435 
437 
492 RCL_PUBLIC
493 RCL_WARN_UNUSED
494 rcl_ret_t
495 rcl_take(
496  const rcl_subscription_t * subscription,
497  void * ros_message,
498  rmw_message_info_t * message_info,
499  rmw_subscription_allocation_t * allocation
500 );
501 
503 
543 RCL_PUBLIC
544 RCL_WARN_UNUSED
545 rcl_ret_t
547  const rcl_subscription_t * subscription,
548  size_t count,
549  rmw_message_sequence_t * message_sequence,
550  rmw_message_info_sequence_t * message_info_sequence,
551  rmw_subscription_allocation_t * allocation
552 );
553 
555 
590 RCL_PUBLIC
591 RCL_WARN_UNUSED
592 rcl_ret_t
594  const rcl_subscription_t * subscription,
595  rcl_serialized_message_t * serialized_message,
596  rmw_message_info_t * message_info,
597  rmw_subscription_allocation_t * allocation);
598 
600 
628 RCL_PUBLIC
629 RCL_WARN_UNUSED
630 rcl_ret_t
632  const rcl_subscription_t * subscription,
633  void ** loaned_message,
634  rmw_message_info_t * message_info,
635  rmw_subscription_allocation_t * allocation);
636 
638 
660 RCL_PUBLIC
661 RCL_WARN_UNUSED
662 rcl_ret_t
664  const rcl_subscription_t * subscription,
665  void * loaned_message);
666 
668 
689 RCL_PUBLIC
690 RCL_WARN_UNUSED
691 const char *
693 
695 
716 RCL_PUBLIC
717 RCL_WARN_UNUSED
720 
722 
747 RCL_PUBLIC
748 RCL_WARN_UNUSED
749 rmw_subscription_t *
751 
753 
770 RCL_PUBLIC
771 bool
772 rcl_subscription_is_valid(const rcl_subscription_t * subscription);
773 
775 
794 RCL_PUBLIC
795 RCL_WARN_UNUSED
796 rmw_ret_t
798  const rcl_subscription_t * subscription,
799  size_t * publisher_count);
800 
802 
822 RCL_PUBLIC
823 RCL_WARN_UNUSED
824 const rmw_qos_profile_t *
826 
828 
835 RCL_PUBLIC
836 bool
838 
840 
863 RCL_PUBLIC
864 RCL_WARN_UNUSED
865 rcl_ret_t
867  const rcl_subscription_t * subscription,
868  rcl_event_callback_t callback,
869  const void * user_data);
870 
871 #ifdef __cplusplus
872 }
873 #endif
874 
875 #endif // RCL__SUBSCRIPTION_H_
rcutils_allocator_t rcl_allocator_t
Encapsulation of an allocator.
Definition: allocator.h:31
Structure which encapsulates a ROS Node.
Definition: node.h:42
Options available for a rcl subscription.
Definition: subscription.h:46
rcl_allocator_t allocator
Custom allocator for the subscription, used for incidental allocations.
Definition: subscription.h:51
rmw_qos_profile_t qos
Middleware quality of service settings for the subscription.
Definition: subscription.h:48
rmw_subscription_options_t rmw_subscription_options
rmw specific subscription options, e.g. the rmw implementation specific payload.
Definition: subscription.h:53
Structure which encapsulates a ROS Subscription.
Definition: subscription.h:39
rcl_subscription_impl_t * impl
Pointer to the subscription implementation.
Definition: subscription.h:41
RCL_PUBLIC RCL_WARN_UNUSED rcl_subscription_options_t rcl_subscription_get_default_options(void)
Return the default subscription options in a rcl_subscription_options_t.
Definition: subscription.c:202
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_content_filter_options_fini(const rcl_subscription_t *subscription, rcl_subscription_content_filter_options_t *options)
Reclaim rcl_subscription_content_filter_options_t structure.
Definition: subscription.c:411
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_options_fini(rcl_subscription_options_t *option)
Reclaim resources held inside rcl_subscription_options_t structure.
Definition: subscription.c:214
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_init(rcl_subscription_t *subscription, const rcl_node_t *node, const rosidl_message_type_support_t *type_support, const char *topic_name, const rcl_subscription_options_t *options)
Initialize a ROS subscription.
Definition: subscription.c:47
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_take_sequence(const rcl_subscription_t *subscription, size_t count, rmw_message_sequence_t *message_sequence, rmw_message_info_sequence_t *message_info_sequence, rmw_subscription_allocation_t *allocation)
Take a sequence of messages from a topic using a rcl subscription.
Definition: subscription.c:533
RCL_PUBLIC RCL_WARN_UNUSED const char * rcl_subscription_get_topic_name(const rcl_subscription_t *subscription)
Get the topic name for the subscription.
Definition: subscription.c:663
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_set_on_new_message_callback(const rcl_subscription_t *subscription, rcl_event_callback_t callback, const void *user_data)
Set the on new message callback function for the subscription.
Definition: subscription.c:765
RCL_PUBLIC bool rcl_subscription_can_loan_messages(const rcl_subscription_t *subscription)
Check if subscription instance can loan messages.
Definition: subscription.c:734
RCL_PUBLIC RCL_WARN_UNUSED rmw_subscription_t * rcl_subscription_get_rmw_handle(const rcl_subscription_t *subscription)
Return the rmw subscription handle.
Definition: subscription.c:683
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_fini(rcl_subscription_t *subscription, rcl_node_t *node)
Finalize a rcl_subscription_t.
Definition: subscription.c:162
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_take(const rcl_subscription_t *subscription, void *ros_message, rmw_message_info_t *message_info, rmw_subscription_allocation_t *allocation)
Take a ROS message from a topic using a rcl subscription.
Definition: subscription.c:498
RCL_PUBLIC RCL_WARN_UNUSED rmw_ret_t rcl_subscription_get_publisher_count(const rcl_subscription_t *subscription, size_t *publisher_count)
Get the number of publishers matched to a subscription.
Definition: subscription.c:703
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_options_set_content_filter_options(const char *filter_expression, size_t expression_parameters_argc, const char *expression_parameter_argv[], rcl_subscription_options_t *options)
Set the content filter options for the given subscription options.
Definition: subscription.c:236
RCL_PUBLIC bool rcl_subscription_is_valid(const rcl_subscription_t *subscription)
Check that the subscription is valid.
Definition: subscription.c:692
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_take_serialized_message(const rcl_subscription_t *subscription, rcl_serialized_message_t *serialized_message, rmw_message_info_t *message_info, rmw_subscription_allocation_t *allocation)
Take a serialized raw message from a topic using a rcl subscription.
Definition: subscription.c:579
struct rcl_subscription_options_s rcl_subscription_options_t
Options available for a rcl subscription.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_take_loaned_message(const rcl_subscription_t *subscription, void **loaned_message, rmw_message_info_t *message_info, rmw_subscription_allocation_t *allocation)
Take a loaned message from a topic using a rcl subscription.
Definition: subscription.c:612
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_content_filter_options_set(const rcl_subscription_t *subscription, const char *filter_expression, size_t expression_parameters_argc, const char *expression_parameter_argv[], rcl_subscription_content_filter_options_t *options)
Set the content filter options for the given subscription options.
Definition: subscription.c:382
RCL_PUBLIC RCL_WARN_UNUSED rcl_subscription_content_filter_options_t rcl_get_zero_initialized_subscription_content_filter_options(void)
Return the zero initialized subscription content filter options.
Definition: subscription.c:343
RCL_PUBLIC RCL_WARN_UNUSED bool rcl_subscription_is_cft_enabled(const rcl_subscription_t *subscription)
Check if the content filtered topic feature is enabled in the subscription.
Definition: subscription.c:431
RCL_PUBLIC RCL_WARN_UNUSED const rmw_qos_profile_t * rcl_subscription_get_actual_qos(const rcl_subscription_t *subscription)
Get the actual qos settings of the subscription.
Definition: subscription.c:725
RCL_PUBLIC RCL_WARN_UNUSED rcl_subscription_t rcl_get_zero_initialized_subscription(void)
Return a rcl_subscription_t struct with members set to NULL.
Definition: subscription.c:40
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_get_content_filter(const rcl_subscription_t *subscription, rcl_subscription_content_filter_options_t *options)
Retrieve the filter expression of the subscription.
Definition: subscription.c:474
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_set_content_filter(const rcl_subscription_t *subscription, const rcl_subscription_content_filter_options_t *options)
Set the filter expression and expression parameters for the subscription.
Definition: subscription.c:440
struct rcl_subscription_s rcl_subscription_t
Structure which encapsulates a ROS Subscription.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_content_filter_options_init(const rcl_subscription_t *subscription, const char *filter_expression, size_t expression_parameters_argc, const char *expression_parameter_argv[], rcl_subscription_content_filter_options_t *options)
Initialize the content filter options for the given subscription options.
Definition: subscription.c:352
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_return_loaned_message_from_subscription(const rcl_subscription_t *subscription, void *loaned_message)
Return a loaned message from a topic using a rcl subscription.
Definition: subscription.c:648
RCL_PUBLIC RCL_WARN_UNUSED const rcl_subscription_options_t * rcl_subscription_get_options(const rcl_subscription_t *subscription)
Return the rcl subscription options.
Definition: subscription.c:674
rmw_serialized_message_t rcl_serialized_message_t
typedef for rmw_serialized_message_t;
Definition: types.h:127
rmw_ret_t rcl_ret_t
The type that holds an rcl return code.
Definition: types.h:23