rmw
master
C API providing a middleware abstraction layer which is used to implement the rest of ROS.
|
Go to the source code of this file.
Functions | |
rmw_ret_t | rmw_get_publishers_info_by_topic (const rmw_node_t *node, rcutils_allocator_t *allocator, const char *topic_name, bool no_mangle, rmw_topic_endpoint_info_array_t *publishers_info) |
Retrieve endpoint information for each known publisher of a given topic. More... | |
rmw_ret_t | rmw_get_subscriptions_info_by_topic (const rmw_node_t *node, rcutils_allocator_t *allocator, const char *topic_name, bool no_mangle, rmw_topic_endpoint_info_array_t *subscriptions_info) |
Retrieve endpoint information for each known subscription of a given topic. More... | |
rmw_ret_t rmw_get_publishers_info_by_topic | ( | const rmw_node_t * | node, |
rcutils_allocator_t * | allocator, | ||
const char * | topic_name, | ||
bool | no_mangle, | ||
rmw_topic_endpoint_info_array_t * | publishers_info | ||
) |
Retrieve endpoint information for each known publisher of a given topic.
This function returns an array of endpoint information for each publisher of a given topic, as discovered so far by the given node. Endpoint information includes the publisher's node name and namespace, the associated topic type, the publisher's gid, and the publisher QoS profile. Names of non-existent topics are allowed, in which case an empty array will be returned.
RMW_QOS_POLICY_*_UNKNOWN
. For DDS based implementations, the only QoS policies that are guaranteed to be shared during discovery are the ones that participate in endpoint matching. From the current QoS settings available, the only ones not shared by DDS based implementations are history
and history_depth
.Attribute | Adherence |
---|---|
Allocates Memory | Yes |
Thread-Safe | Yes |
Uses Atomics | Maybe [1] |
Lock-Free | Maybe [1] |
[1] rmw implementation defined, check the implementation documentation
publishers_info
while rmw_get_publishers_info_by_topic() uses it.topic_name
reads are safe, but concurrent reads and writes are not.allocator
may not be. Check your allocator documentation for further reference.node
must be a valid node handle, as returned by rmw_create_node(). publishers_info
must be a zero-initialized array of endpoints' information, as returned by rmw_get_zero_initialized_topic_endpoint_info_array().[in] | node | Node to query the ROS graph. |
[in] | allocator | Allocator to be used when populating the publishers_info array. |
[in] | topic_name | Name of the topic for publisher lookup, often a fully qualified topic name but not necessarily (see rmw_create_publisher()). |
[in] | no_mangle | Whether to mangle the topic name before publisher lookup or not. |
[out] | publishers_info | Array of publisher information, populated on success, left unchanged on failure. If populated, it is up to the caller to finalize this array later on, using rmw_topic_endpoint_info_array_fini(). QoS Profiles in the info array will use RMW_DURATION_INFINITE for infinite durations, avoiding exposing any implementation-specific values. |
RMW_RET_OK
if the query was successful, or RMW_RET_INVALID_ARGUMENT
if node
is NULL, or RMW_RET_INVALID_ARGUMENT
if allocator
is not valid, by rcutils_allocator_is_valid() definition, or RMW_RET_INVALID_ARGUMENT
if topic_name
is NULL, or RMW_RET_INVALID_ARGUMENT
if publishers_info
is NULL, or RMW_RET_INVALID_ARGUMENT
if publishers_info
is not a zero-initialized array, or RMW_RET_INCORRECT_RMW_IMPLEMENTATION
if the node
implementation identifier does not match this implementation, or RMW_RET_BAD_ALLOC
if memory allocation fails, or RMW_RET_ERROR
if an unspecified error occurs. rmw_ret_t rmw_get_subscriptions_info_by_topic | ( | const rmw_node_t * | node, |
rcutils_allocator_t * | allocator, | ||
const char * | topic_name, | ||
bool | no_mangle, | ||
rmw_topic_endpoint_info_array_t * | subscriptions_info | ||
) |
Retrieve endpoint information for each known subscription of a given topic.
This function returns an array of endpoint information for each subscription of a given topic, as discovered so far by the given node. Endpoint information includes the subscription's node name and namespace, the associated topic type, the subscription's gid, and the subscription QoS profile. Names of non-existent topics are allowed, in which case an empty array will be returned.
Attribute | Adherence |
---|---|
Allocates Memory | Yes |
Thread-Safe | Yes |
Uses Atomics | Maybe [1] |
Lock-Free | Maybe [1] |
[1] rmw implementation defined, check the implementation documentation
subscriptions_info
while rmw_get_subscriptions_info_by_topic() uses it.allocator
may not be. Check your allocator documentation for further reference.node
must be a valid node handle, as returned by rmw_create_node(). subscriptions_info
must be a zero-initialized array of endpoints' information, as returned by rmw_get_zero_initialized_topic_endpoint_info_array().[in] | node | Node to query the ROS graph. |
[in] | allocator | Allocator to be used when populating the subscriptions_info array. |
[in] | topic_name | Name of the topic for subscription lookup, often a fully qualified topic name but not necessarily (see rmw_create_subscription()). |
[in] | no_mangle | Whether to mangle the topic name before subscription lookup or not. |
[out] | publishers_info | Array of subscription information, populated on success, left unchanged on failure. If populated, it is up to the caller to finalize this array later on, using rmw_topic_endpoint_info_array_fini(). QoS Profiles in the info array will use RMW_DURATION_INFINITE for infinite durations, avoiding exposing any implementation-specific values. |
RMW_RET_OK
if the query was successful, or RMW_RET_INVALID_ARGUMENT
if node
is NULL, or RMW_RET_INVALID_ARGUMENT
if allocator
is not valid, by rcutils_allocator_is_valid() definition, or RMW_RET_INVALID_ARGUMENT
if topic_name
is NULL, or RMW_RET_INVALID_ARGUMENT
if subscriptions_info
is NULL, or RMW_RET_INVALID_ARGUMENT
if subscriptions_info
is not a zero-initialized array, or RMW_RET_INCORRECT_RMW_IMPLEMENTATION
if the node
implementation identifier does not match this implementation, or RMW_RET_BAD_ALLOC
if memory allocation fails, or RMW_RET_ERROR
if an unspecified error occurs.