|
rmw
master
C API providing a middleware abstraction layer which is used to implement the rest of ROS.
|
#include "rmw/macros.h"#include "rmw/names_and_types.h"#include "rmw/types.h"#include "rmw/visibility_control.h"
Go to the source code of this file.
Functions | |
| rmw_ret_t | rmw_get_topic_names_and_types (const rmw_node_t *node, rcutils_allocator_t *allocator, bool no_demangle, rmw_names_and_types_t *topic_names_and_types) |
| Return a list of topic names and their types. More... | |
| rmw_ret_t rmw_get_topic_names_and_types | ( | const rmw_node_t * | node, |
| rcutils_allocator_t * | allocator, | ||
| bool | no_demangle, | ||
| rmw_names_and_types_t * | topic_names_and_types | ||
| ) |
Return a list of topic names and their types.
This function returns a list of topic names in the ROS graph and their types.
The node parameter must not be NULL, and must point to a valid node.
The topic_names_and_types parameter must be allocated and zero initialized. The topic_names_and_types is the output for this function, and contains allocated memory. Therefore, it should be passed to rmw_names_and_types_fini() when it is no longer needed. Failing to do so will result in leaked memory.
There may be some demangling that occurs when listing the topics from the middleware implementation. This is the mechanism by which this function can discriminate between ROS topics, non-ROS topics, and topics which may be used to implement other concepts like ROS Services.
For example, if the underlying implementation is DDS or RTPS, ROS specific prefixes may be prepended to the user namespace, and the namespace may be stripped of leading and trailing slashes, see:
http://design.ros2.org/articles/topic_and_service_names.html#ros-namespaces-with-dds-partitions
As well as:
http://design.ros2.org/articles/topic_and_service_names.html#communicating-with-non-ros-topics
If the no_demangle argument is true, then the topic names given by the middleware will be returned without any demangling or filtering. For example, the ROS topic /foo may be returned as rt/foo or the DDS topic (non-ROS topic) with a partition list ‘['foo’, 'bar']and topicbaz may be returned asfoo/baz` (note that only the first partition is used but it is still concatenated to the topic).
| [in] | node | the handle to the node being used to query the ROS graph |
| [in] | allocator | allocator to be used when allocating space for strings |
| [in] | no_demangle | if true, list all topics without any demangling |
| [out] | topic_names_and_types | list of topic names and their types |
RMW_RET_OK if the query was successful, or RMW_RET_INVALID_ARGUMENT if the node is invalid, or RMW_RET_INVALID_ARGUMENT if any arguments are invalid, or RMW_RET_BAD_ALLOC if memory allocation fails, or RMW_RET_ERROR if an unspecified error occurs.
1.8.17