ROS 2 rclcpp + rcl - rolling  rolling-e7363f10
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 <stdbool.h>
26 #include <stddef.h>
27 
28 #include "rosidl_runtime_c/message_type_support_struct.h"
29 
30 #include "rcl/allocator.h"
31 #include "rcl/event_callback.h"
32 #include "rcl/macros.h"
33 #include "rcl/node.h"
34 #include "rcl/types.h"
35 #include "rcl/visibility_control.h"
36 
37 #include "rmw/dynamic_message_type_support.h"
38 #include "rmw/message_sequence.h"
39 #include "rmw/ret_types.h"
40 #include "rmw/subscription_content_filter_options.h"
41 #include "rmw/types.h"
42 
45 
47 typedef struct rcl_subscription_s
48 {
52 
55 {
57  rmw_qos_profile_t qos;
59 
62  rmw_subscription_options_t rmw_subscription_options;
66 
68 {
69  rmw_subscription_content_filter_options_t rmw_subscription_content_filter_options;
71 
73 
77 RCL_PUBLIC
78 RCL_WARN_UNUSED
81 
83 
171 RCL_PUBLIC
172 RCL_WARN_UNUSED
173 rcl_ret_t
175  rcl_subscription_t * subscription,
176  const rcl_node_t * node,
177  const rosidl_message_type_support_t * type_support,
178  const char * topic_name,
179  const rcl_subscription_options_t * options
180 );
181 
183 
208 RCL_PUBLIC
209 RCL_WARN_UNUSED
210 rcl_ret_t
211 rcl_subscription_fini(rcl_subscription_t * subscription, rcl_node_t * node);
212 
214 
224 RCL_PUBLIC
225 RCL_WARN_UNUSED
228 
230 
244 RCL_PUBLIC
245 RCL_WARN_UNUSED
246 rcl_ret_t
248 
250 
270 RCL_PUBLIC
271 RCL_WARN_UNUSED
272 rcl_ret_t
274  const char * filter_expression,
275  size_t expression_parameters_argc,
276  const char * expression_parameter_argv[],
277  rcl_subscription_options_t * options);
278 
280 
296 RCL_PUBLIC
297 RCL_WARN_UNUSED
298 rcl_ret_t
300  const char * acceptable_buffer_backends,
301  rcl_subscription_options_t * options);
302 
304 RCL_PUBLIC
305 RCL_WARN_UNUSED
308 
310 
333 RCL_PUBLIC
334 RCL_WARN_UNUSED
335 rcl_ret_t
337  const rcl_subscription_t * subscription,
338  const char * filter_expression,
339  size_t expression_parameters_argc,
340  const char * expression_parameter_argv[],
342 
344 
367 RCL_PUBLIC
368 RCL_WARN_UNUSED
369 rcl_ret_t
371  const rcl_subscription_t * subscription,
372  const char * filter_expression,
373  size_t expression_parameters_argc,
374  const char * expression_parameter_argv[],
376 
378 
394 RCL_PUBLIC
395 RCL_WARN_UNUSED
396 rcl_ret_t
398  const rcl_subscription_t * subscription,
400 
402 
407 RCL_PUBLIC
408 RCL_WARN_UNUSED
409 bool
411 
413 
433 RCL_PUBLIC
434 RCL_WARN_UNUSED
435 rcl_ret_t
437  const rcl_subscription_t * subscription,
439 );
440 
442 
464 RCL_PUBLIC
465 RCL_WARN_UNUSED
466 rcl_ret_t
468  const rcl_subscription_t * subscription,
470 );
471 
473 
528 RCL_PUBLIC
529 RCL_WARN_UNUSED
530 rcl_ret_t
531 rcl_take(
532  const rcl_subscription_t * subscription,
533  void * ros_message,
534  rmw_message_info_t * message_info,
535  rmw_subscription_allocation_t * allocation
536 );
537 
539 
579 RCL_PUBLIC
580 RCL_WARN_UNUSED
581 rcl_ret_t
583  const rcl_subscription_t * subscription,
584  size_t count,
585  rmw_message_sequence_t * message_sequence,
586  rmw_message_info_sequence_t * message_info_sequence,
587  rmw_subscription_allocation_t * allocation
588 );
589 
591 
626 RCL_PUBLIC
627 RCL_WARN_UNUSED
628 rcl_ret_t
630  const rcl_subscription_t * subscription,
631  rcl_serialized_message_t * serialized_message,
632  rmw_message_info_t * message_info,
633  rmw_subscription_allocation_t * allocation);
634 
636 
664 RCL_PUBLIC
665 RCL_WARN_UNUSED
666 rcl_ret_t
668  const rcl_subscription_t * subscription,
669  rosidl_dynamic_typesupport_dynamic_data_t * dynamic_message,
670  rmw_message_info_t * message_info,
671  rmw_subscription_allocation_t * allocation);
672 
674 
702 RCL_PUBLIC
703 RCL_WARN_UNUSED
704 rcl_ret_t
706  const rcl_subscription_t * subscription,
707  void ** loaned_message,
708  rmw_message_info_t * message_info,
709  rmw_subscription_allocation_t * allocation);
710 
712 
734 RCL_PUBLIC
735 RCL_WARN_UNUSED
736 rcl_ret_t
738  const rcl_subscription_t * subscription,
739  void * loaned_message);
740 
742 
763 RCL_PUBLIC
764 RCL_WARN_UNUSED
765 const char *
767 
769 
790 RCL_PUBLIC
791 RCL_WARN_UNUSED
794 
796 
821 RCL_PUBLIC
822 RCL_WARN_UNUSED
823 rmw_subscription_t *
825 
827 
844 RCL_PUBLIC
845 bool
846 rcl_subscription_is_valid(const rcl_subscription_t * subscription);
847 
849 
868 RCL_PUBLIC
869 RCL_WARN_UNUSED
870 rmw_ret_t
872  const rcl_subscription_t * subscription,
873  size_t * publisher_count);
874 
876 
896 RCL_PUBLIC
897 RCL_WARN_UNUSED
898 const rmw_qos_profile_t *
900 
902 
909 RCL_PUBLIC
910 bool
912 
914 
948 RCL_PUBLIC
949 RCL_WARN_UNUSED
950 rcl_ret_t
952  const rcl_subscription_t * subscription,
953  rcl_event_callback_t callback,
954  const void * user_data);
955 
957 
962 RCL_PUBLIC
963 bool
965 
966 #ifdef __cplusplus
967 }
968 #endif
969 
970 #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:49
Options available for a rcl subscription.
Definition: subscription.h:55
rcl_allocator_t allocator
Custom allocator for the subscription, used for incidental allocations.
Definition: subscription.h:60
rmw_qos_profile_t qos
Middleware quality of service settings for the subscription.
Definition: subscription.h:57
rmw_subscription_options_t rmw_subscription_options
rmw specific subscription options, e.g. the rmw implementation specific payload.
Definition: subscription.h:62
bool disable_loaned_message
Disable flag to LoanedMessage, initialized via environmental variable.
Definition: subscription.h:64
Structure which encapsulates a ROS Subscription.
Definition: subscription.h:48
rcl_subscription_impl_t * impl
Pointer to the subscription implementation.
Definition: subscription.h:50
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:240
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:503
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:269
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:61
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:625
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:789
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:872
RCL_PUBLIC bool rcl_subscription_can_loan_messages(const rcl_subscription_t *subscription)
Check if subscription instance can loan messages.
Definition: subscription.c:858
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:807
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:191
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:590
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:827
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:328
RCL_PUBLIC bool rcl_subscription_is_valid(const rcl_subscription_t *subscription)
Check that the subscription is valid.
Definition: subscription.c:816
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:671
struct rcl_subscription_options_s rcl_subscription_options_t
Options available for a rcl subscription.
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_subscription_options_set_acceptable_buffer_backends(const char *acceptable_buffer_backends, rcl_subscription_options_t *options)
Set the acceptable buffer backends for the given subscription options.
Definition: subscription.c:298
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:737
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:474
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:435
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:523
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:849
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:53
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:566
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:532
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:444
RCL_PUBLIC bool rcl_subscription_is_cft_supported(const rcl_subscription_t *subscription)
Check if subscription instance supports content filtering.
Definition: subscription.c:889
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:774
RCL_PUBLIC RCL_WARN_UNUSED rcl_ret_t rcl_take_dynamic_message(const rcl_subscription_t *subscription, rosidl_dynamic_typesupport_dynamic_data_t *dynamic_message, rmw_message_info_t *message_info, rmw_subscription_allocation_t *allocation)
Take a dynamic type message from a topic using a rcl subscription.
Definition: subscription.c:705
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:798
rmw_serialized_message_t rcl_serialized_message_t
typedef for rmw_serialized_message_t;
Definition: types.h:153
rmw_ret_t rcl_ret_t
The type that holds an rcl return code.
Definition: types.h:25