ROS 2 rclcpp + rcl - jazzy  jazzy
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 RCL_PUBLIC
273 RCL_WARN_UNUSED
276 
278 
301 RCL_PUBLIC
302 RCL_WARN_UNUSED
303 rcl_ret_t
305  const rcl_subscription_t * subscription,
306  const char * filter_expression,
307  size_t expression_parameters_argc,
308  const char * expression_parameter_argv[],
310 
312 
335 RCL_PUBLIC
336 RCL_WARN_UNUSED
337 rcl_ret_t
339  const rcl_subscription_t * subscription,
340  const char * filter_expression,
341  size_t expression_parameters_argc,
342  const char * expression_parameter_argv[],
344 
346 
362 RCL_PUBLIC
363 RCL_WARN_UNUSED
364 rcl_ret_t
366  const rcl_subscription_t * subscription,
368 
370 
375 RCL_PUBLIC
376 RCL_WARN_UNUSED
377 bool
379 
381 
401 RCL_PUBLIC
402 RCL_WARN_UNUSED
403 rcl_ret_t
405  const rcl_subscription_t * subscription,
407 );
408 
410 
432 RCL_PUBLIC
433 RCL_WARN_UNUSED
434 rcl_ret_t
436  const rcl_subscription_t * subscription,
438 );
439 
441 
496 RCL_PUBLIC
497 RCL_WARN_UNUSED
498 rcl_ret_t
499 rcl_take(
500  const rcl_subscription_t * subscription,
501  void * ros_message,
502  rmw_message_info_t * message_info,
503  rmw_subscription_allocation_t * allocation
504 );
505 
507 
547 RCL_PUBLIC
548 RCL_WARN_UNUSED
549 rcl_ret_t
551  const rcl_subscription_t * subscription,
552  size_t count,
553  rmw_message_sequence_t * message_sequence,
554  rmw_message_info_sequence_t * message_info_sequence,
555  rmw_subscription_allocation_t * allocation
556 );
557 
559 
594 RCL_PUBLIC
595 RCL_WARN_UNUSED
596 rcl_ret_t
598  const rcl_subscription_t * subscription,
599  rcl_serialized_message_t * serialized_message,
600  rmw_message_info_t * message_info,
601  rmw_subscription_allocation_t * allocation);
602 
604 
632 RCL_PUBLIC
633 RCL_WARN_UNUSED
634 rcl_ret_t
636  const rcl_subscription_t * subscription,
637  rosidl_dynamic_typesupport_dynamic_data_t * dynamic_message,
638  rmw_message_info_t * message_info,
639  rmw_subscription_allocation_t * allocation);
640 
642 
670 RCL_PUBLIC
671 RCL_WARN_UNUSED
672 rcl_ret_t
674  const rcl_subscription_t * subscription,
675  void ** loaned_message,
676  rmw_message_info_t * message_info,
677  rmw_subscription_allocation_t * allocation);
678 
680 
702 RCL_PUBLIC
703 RCL_WARN_UNUSED
704 rcl_ret_t
706  const rcl_subscription_t * subscription,
707  void * loaned_message);
708 
710 
731 RCL_PUBLIC
732 RCL_WARN_UNUSED
733 const char *
735 
737 
758 RCL_PUBLIC
759 RCL_WARN_UNUSED
762 
764 
789 RCL_PUBLIC
790 RCL_WARN_UNUSED
791 rmw_subscription_t *
793 
795 
812 RCL_PUBLIC
813 bool
814 rcl_subscription_is_valid(const rcl_subscription_t * subscription);
815 
817 
836 RCL_PUBLIC
837 RCL_WARN_UNUSED
838 rmw_ret_t
840  const rcl_subscription_t * subscription,
841  size_t * publisher_count);
842 
844 
864 RCL_PUBLIC
865 RCL_WARN_UNUSED
866 const rmw_qos_profile_t *
868 
870 
877 RCL_PUBLIC
878 bool
880 
882 
905 RCL_PUBLIC
906 RCL_WARN_UNUSED
907 rcl_ret_t
909  const rcl_subscription_t * subscription,
910  rcl_event_callback_t callback,
911  const void * user_data);
912 
913 #ifdef __cplusplus
914 }
915 #endif
916 
917 #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:227
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:453
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:256
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:50
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:575
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:738
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:821
RCL_PUBLIC bool rcl_subscription_can_loan_messages(const rcl_subscription_t *subscription)
Check if subscription instance can loan messages.
Definition: subscription.c:807
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:756
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:178
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:540
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:776
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:278
RCL_PUBLIC bool rcl_subscription_is_valid(const rcl_subscription_t *subscription)
Check that the subscription is valid.
Definition: subscription.c:765
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:621
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:687
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:424
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:385
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:473
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:798
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:516
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:482
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:394
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:723
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:655
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:747
rmw_serialized_message_t rcl_serialized_message_t
typedef for rmw_serialized_message_t;
Definition: types.h:134
rmw_ret_t rcl_ret_t
The type that holds an rcl return code.
Definition: types.h:24