C++ API
rmw: ROS Middleware Abstraction Interface
rmw
defines an interface of middleware primitives that are used by the higher level ROS APIs. It consists of these main components:
Initialization and Shutdown:
rmw/init.h
Nodes
rmw/rmw.h
Publisher
rmw/rmw.h
Subscription
rmw/rmw.h
Service Client
rmw/rmw.h
Service Server
rmw/rmw.h
There are some common utility functions in combination with “Topics” or “Services”:
A function to validate a fully qualified topic or service name
rmw/validate_full_topic_name.h
A function to validate a node’s namespace
rmw/validate_namespace.h
A function to validate a node’s name
rmw/validate_node_name.h
A function to validate the compatibility of two QoS profiles
rmw/qos_profiles.h
It also has some machinery that is necessary to wait on and act on these concepts:
Initialization and shutdown management (global for now)
rmw/rmw.h
Wait sets for waiting on messages and service requests / responses to be ready
rmw/rmw.h
Guard conditions for waking up wait sets asynchronously
rmw/rmw.h
Introspection of the ROS graph
rmw_names_and_types_t
rmw/names_and_types.h
rmw/get_topic_names_and_types.h
rmw/get_topic_endpoint_info.h
rmw/get_service_names_and_types.h
Further still there are some useful abstractions and utilities:
Allocator functions for various types
rmw/allocators.h
Error handling functionality (C style)
rmw/error_handling.h
Macros
rmw/macros.h
Return code types and other utility types
rmw/types.h
Sanity checks for some of the types
rmw/sanity_checks.h
Macros for controlling symbol visibility on the library
rmw/visibility_control.h
Utility function to demangle a type to a human readable string (C++ specific):
rmw/impl/cpp/demangle.hpp
Page Hierarchy
Class Hierarchy
-
- Struct rmw_client_s
- Struct rmw_clients_s
- Struct rmw_context_s
- Struct rmw_discovery_options_s
- Struct rmw_event_s
- Struct rmw_events_s
- Struct rmw_gid_s
- Struct rmw_guard_condition_s
- Struct rmw_guard_conditions_s
- Struct rmw_incompatible_type_status_s
- Struct rmw_init_options_s
- Struct rmw_liveliness_changed_status_s
- Struct rmw_liveliness_lost_status_s
- Struct rmw_matched_status_s
- Struct rmw_message_info_s
- Struct rmw_message_info_sequence_s
- Struct rmw_message_lost_status_s
- Struct rmw_message_sequence_s
- Struct rmw_names_and_types_s
- Struct rmw_network_flow_endpoint_array_s
- Struct rmw_network_flow_endpoint_s
- Struct rmw_node_s
- Struct rmw_offered_deadline_missed_status_s
- Struct rmw_peer_address_s
- Struct rmw_publisher_allocation_s
- Struct rmw_publisher_options_s
- Struct rmw_publisher_s
- Struct rmw_qos_incompatible_event_status_s
- Struct rmw_qos_profile_s
- Struct rmw_request_id_s
- Struct rmw_requested_deadline_missed_status_s
- Struct rmw_security_options_s
- Struct rmw_service_info_s
- Struct rmw_service_s
- Struct rmw_services_s
- Struct rmw_subscription_allocation_s
- Struct rmw_subscription_content_filter_options_s
- Struct rmw_subscription_options_s
- Struct rmw_subscription_s
- Struct rmw_subscriptions_s
- Struct rmw_time_s
- Struct rmw_topic_endpoint_info_array_s
- Struct rmw_topic_endpoint_info_s
- Struct rmw_wait_set_s
- Enum
- Enum rmw_automatic_discovery_range_e
- Enum rmw_endpoint_type_e
- Enum rmw_event_type_e
- Enum rmw_feature_e
- Enum rmw_internet_protocol_e
- Enum rmw_log_severity_t
- Enum rmw_qos_compatibility_type_e
- Enum rmw_qos_durability_policy_e
- Enum rmw_qos_history_policy_e
- Enum rmw_qos_liveliness_policy_e
- Enum rmw_qos_policy_kind_e
- Enum rmw_qos_reliability_policy_e
- Enum rmw_security_enforcement_policy_e
- Enum rmw_transport_protocol_e
- Enum rmw_unique_network_flow_endpoints_requirement_e
File Hierarchy
-
- Directory include
- Directory rmw
- Directory events_statuses
- File events_statuses.h
- File incompatible_qos.h
- File incompatible_type.h
- File liveliness_changed.h
- File liveliness_lost.h
- File matched.h
- File message_lost.h
- File offered_deadline_missed.h
- File requested_deadline_missed.h
- Directory impl
- Directory cpp
- File demangle.hpp
- File key_value.hpp
- File macros.hpp
- File config.h
- Directory cpp
- File allocators.h
- File check_type_identifiers_match.h
- File convert_rcutils_ret_to_rmw_ret.h
- File discovery_options.h
- File domain_id.h
- File dynamic_message_type_support.h
- File error_handling.h
- File event.h
- File event_callback_type.h
- File features.h
- File get_network_flow_endpoints.h
- File get_node_info_and_types.h
- File get_service_names_and_types.h
- File get_topic_endpoint_info.h
- File get_topic_names_and_types.h
- File incompatible_qos_events_statuses.h
- File init.h
- File init_options.h
- File macros.h
- File message_sequence.h
- File names_and_types.h
- File network_flow_endpoint.h
- File network_flow_endpoint_array.h
- File publisher_options.h
- File qos_policy_kind.h
- File qos_profiles.h
- File qos_string_conversions.h
- File ret_types.h
- File rmw.h
- File sanity_checks.h
- File security_options.h
- File serialized_message.h
- File subscription_content_filter_options.h
- File subscription_options.h
- File time.h
- File topic_endpoint_info.h
- File topic_endpoint_info_array.h
- File types.h
- File validate_full_topic_name.h
- File validate_namespace.h
- File validate_node_name.h
- File visibility_control.h
- Directory events_statuses
- Directory rmw
- Directory include