ROS 2 rclcpp + rcl - lyrical  lyrical
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/dynamic_message_type_support.h"
33 #include "rmw/message_sequence.h"
34 
37 
39 typedef struct rcl_subscription_s
40 {
44 
47 {
49  rmw_qos_profile_t qos;
51 
54  rmw_subscription_options_t rmw_subscription_options;
58 
60 {
61  rmw_subscription_content_filter_options_t rmw_subscription_content_filter_options;
63 
65 
69 RCL_PUBLIC
70 RCL_WARN_UNUSED
73 
75 
163 RCL_PUBLIC
164 RCL_WARN_UNUSED
165 rcl_ret_t
167  rcl_subscription_t * subscription,
168  const rcl_node_t * node,
169  const rosidl_message_type_support_t * type_support,
170  const char * topic_name,
171  const rcl_subscription_options_t * options
172 );
173 
175 
200 RCL_PUBLIC
201 RCL_WARN_UNUSED
202 rcl_ret_t
203 rcl_subscription_fini(rcl_subscription_t * subscription, rcl_node_t * node);
204 
206 
216 RCL_PUBLIC
217 RCL_WARN_UNUSED
220 
222 
236 RCL_PUBLIC
237 RCL_WARN_UNUSED
238 rcl_ret_t
240 
242 
262 RCL_PUBLIC
263 RCL_WARN_UNUSED
264 rcl_ret_t
266  const char * filter_expression,
267  size_t expression_parameters_argc,
268  const char * expression_parameter_argv[],
269  rcl_subscription_options_t * options);
270 
272 
288 RCL_PUBLIC
289 RCL_WARN_UNUSED
290 rcl_ret_t
292  const char * acceptable_buffer_backends,
293  rcl_subscription_options_t * options);
294 
296 RCL_PUBLIC
297 RCL_WARN_UNUSED
300 
302 
325 RCL_PUBLIC
326 RCL_WARN_UNUSED
327 rcl_ret_t
329  const rcl_subscription_t * subscription,
330  const char * filter_expression,
331  size_t expression_parameters_argc,
332  const char * expression_parameter_argv[],
334 
336 
359 RCL_PUBLIC
360 RCL_WARN_UNUSED
361 rcl_ret_t
363  const rcl_subscription_t * subscription,
364  const char * filter_expression,
365  size_t expression_parameters_argc,
366  const char * expression_parameter_argv[],
368 
370 
386 RCL_PUBLIC
387 RCL_WARN_UNUSED
388 rcl_ret_t
390  const rcl_subscription_t * subscription,
392 
394 
399 RCL_PUBLIC
400 RCL_WARN_UNUSED
401 bool
403 
405 
425 RCL_PUBLIC
426 RCL_WARN_UNUSED
427 rcl_ret_t
429  const rcl_subscription_t * subscription,
431 );
432 
434 
456 RCL_PUBLIC
457 RCL_WARN_UNUSED
458 rcl_ret_t
460  const rcl_subscription_t * subscription,
462 );
463 
465 
520 RCL_PUBLIC
521 RCL_WARN_UNUSED
522 rcl_ret_t
523 rcl_take(
524  const rcl_subscription_t * subscription,
525  void * ros_message,
526  rmw_message_info_t * message_info,
527  rmw_subscription_allocation_t * allocation
528 );
529 
531 
571 RCL_PUBLIC
572 RCL_WARN_UNUSED
573 rcl_ret_t
575  const rcl_subscription_t * subscription,
576  size_t count,
577  rmw_message_sequence_t * message_sequence,
578  rmw_message_info_sequence_t * message_info_sequence,
579  rmw_subscription_allocation_t * allocation
580 );
581 
583 
618 RCL_PUBLIC
619 RCL_WARN_UNUSED
620 rcl_ret_t
622  const rcl_subscription_t * subscription,
623  rcl_serialized_message_t * serialized_message,
624  rmw_message_info_t * message_info,
625  rmw_subscription_allocation_t * allocation);
626 
628 
656 RCL_PUBLIC
657 RCL_WARN_UNUSED
658 rcl_ret_t
660  const rcl_subscription_t * subscription,
661  rosidl_dynamic_typesupport_dynamic_data_t * dynamic_message,
662  rmw_message_info_t * message_info,
663  rmw_subscription_allocation_t * allocation);
664 
666 
694 RCL_PUBLIC
695 RCL_WARN_UNUSED
696 rcl_ret_t
698  const rcl_subscription_t * subscription,
699  void ** loaned_message,
700  rmw_message_info_t * message_info,
701  rmw_subscription_allocation_t * allocation);
702 
704 
726 RCL_PUBLIC
727 RCL_WARN_UNUSED
728 rcl_ret_t
730  const rcl_subscription_t * subscription,
731  void * loaned_message);
732 
734 
755 RCL_PUBLIC
756 RCL_WARN_UNUSED
757 const char *
759 
761 
782 RCL_PUBLIC
783 RCL_WARN_UNUSED
786 
788 
813 RCL_PUBLIC
814 RCL_WARN_UNUSED
815 rmw_subscription_t *
817 
819 
836 RCL_PUBLIC
837 bool
838 rcl_subscription_is_valid(const rcl_subscription_t * subscription);
839 
841 
860 RCL_PUBLIC
861 RCL_WARN_UNUSED
862 rmw_ret_t
864  const rcl_subscription_t * subscription,
865  size_t * publisher_count);
866 
868 
888 RCL_PUBLIC
889 RCL_WARN_UNUSED
890 const rmw_qos_profile_t *
892 
894 
901 RCL_PUBLIC
902 bool
904 
906 
940 RCL_PUBLIC
941 RCL_WARN_UNUSED
942 rcl_ret_t
944  const rcl_subscription_t * subscription,
945  rcl_event_callback_t callback,
946  const void * user_data);
947 
949 
954 RCL_PUBLIC
955 bool
957 
958 #ifdef __cplusplus
959 }
960 #endif
961 
962 #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:45
Options available for a rcl subscription.
Definition: subscription.h:47
rcl_allocator_t allocator
Custom allocator for the subscription, used for incidental allocations.
Definition: subscription.h:52
rmw_qos_profile_t qos
Middleware quality of service settings for the subscription.
Definition: subscription.h:49
rmw_subscription_options_t rmw_subscription_options
rmw specific subscription options, e.g. the rmw implementation specific payload.
Definition: subscription.h:54
bool disable_loaned_message
Disable flag to LoanedMessage, initialized via environmental variable.
Definition: subscription.h:56
Structure which encapsulates a ROS Subscription.
Definition: subscription.h:40
rcl_subscription_impl_t * impl
Pointer to the subscription implementation.
Definition: subscription.h:42
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:230
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:493
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:259
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:51
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:615
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:779
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:862
RCL_PUBLIC bool rcl_subscription_can_loan_messages(const rcl_subscription_t *subscription)
Check if subscription instance can loan messages.
Definition: subscription.c:848
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:797
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:181
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:580
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:817
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:318
RCL_PUBLIC bool rcl_subscription_is_valid(const rcl_subscription_t *subscription)
Check that the subscription is valid.
Definition: subscription.c:806
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:661
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:288
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:727
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:464
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:425
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:513
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:839
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:43
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:556
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:522
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:434
RCL_PUBLIC bool rcl_subscription_is_cft_supported(const rcl_subscription_t *subscription)
Check if subscription instance supports content filtering.
Definition: subscription.c:879
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:764
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:695
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:788
rmw_serialized_message_t rcl_serialized_message_t
typedef for rmw_serialized_message_t;
Definition: types.h:152
rmw_ret_t rcl_ret_t
The type that holds an rcl return code.
Definition: types.h:24