Function rclcpp::expand_topic_or_service_name

Function Documentation

std::string rclcpp::expand_topic_or_service_name(const std::string &name, const std::string &node_name, const std::string &namespace_, bool is_service = false)

Expand a topic or service name and throw if it is not valid.

This function can be used to “just” validate a topic or service name too, since expanding the topic name is required to fully validate a name.

If the name is invalid, then InvalidTopicNameError is thrown or InvalidServiceNameError if is_service is true.

This function can take any form of a topic or service name, i.e. it does not have to be a fully qualified name. The node name and namespace are used to expand it if necessary while validating it.

Expansion is done with rcl_expand_topic_name. The validation is doen with rcl_validate_topic_name and rmw_validate_full_topic_name, so details about failures can be found in the documentation for those functions.

Parameters:
  • name – the topic or service name to be validated

  • node_name – the name of the node associated with the name

  • namespace_ – the namespace of the node associated with the name

  • is_service – if true InvalidServiceNameError is thrown instead

Throws:
  • InvalidTopicNameError – if name is invalid and is_service is false

  • InvalidServiceNameError – if name is invalid and is_service is true

  • std::bad_alloc – if memory cannot be allocated

  • RCLError – if an unexpect error occurs

  • std::runtime_error – if the topic name is unexpectedly valid or, if the rcl name is invalid or if the rcl namespace is invalid

Returns:

expanded (and validated) topic name