diff --git a/rcl/include/rcl/graph.h b/rcl/include/rcl/graph.h index 5053d5d3a..28b13a4f7 100644 --- a/rcl/include/rcl/graph.h +++ b/rcl/include/rcl/graph.h @@ -77,6 +77,7 @@ typedef rmw_names_and_types_t rcl_names_and_types_t; * \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or * \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or * \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or + * \return `RCL_RET_NODE_NAME_NON_EXISTENT` if the node name wasn't found, or * \return `RCL_RET_ERROR` if an unspecified error occurs. */ RCL_PUBLIC @@ -126,6 +127,7 @@ rcl_get_publisher_names_and_types_by_node( * \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or * \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or * \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or + * \return `RCL_RET_NODE_NAME_NON_EXISTENT` if the node name wasn't found, or * \return `RCL_RET_ERROR` if an unspecified error occurs. */ RCL_PUBLIC @@ -174,6 +176,7 @@ rcl_get_subscriber_names_and_types_by_node( * \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or * \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or * \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or + * \return `RCL_RET_NODE_NAME_NON_EXISTENT` if the node name wasn't found, or * \return `RCL_RET_ERROR` if an unspecified error occurs. */ RCL_PUBLIC @@ -221,6 +224,7 @@ rcl_get_service_names_and_types_by_node( * \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or * \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or * \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or + * \return `RCL_RET_NODE_NAME_NON_EXISTENT` if the node name wasn't found, or * \return `RCL_RET_ERROR` if an unspecified error occurs. */ RCL_PUBLIC diff --git a/rcl/include/rcl/types.h b/rcl/include/rcl/types.h index 86f988823..f837a9c2a 100644 --- a/rcl/include/rcl/types.h +++ b/rcl/include/rcl/types.h @@ -52,6 +52,8 @@ typedef rmw_ret_t rcl_ret_t; #define RCL_RET_NODE_INVALID 200 #define RCL_RET_NODE_INVALID_NAME 201 #define RCL_RET_NODE_INVALID_NAMESPACE 202 +/// Failed to find node name +#define RCL_RET_NODE_NAME_NON_EXISTENT 203 // rcl publisher specific ret codes in 3XX /// Invalid rcl_publisher_t given return code. diff --git a/rcl/src/rcl/common.c b/rcl/src/rcl/common.c index 9c1d6d96c..50307aea0 100644 --- a/rcl/src/rcl/common.c +++ b/rcl/src/rcl/common.c @@ -65,6 +65,8 @@ rcl_convert_rmw_ret_to_rcl_ret(rmw_ret_t rmw_ret) return RCL_RET_BAD_ALLOC; case RMW_RET_UNSUPPORTED: return RCL_RET_UNSUPPORTED; + case RMW_RET_NODE_NAME_NON_EXISTENT: + return RCL_RET_NODE_NAME_NON_EXISTENT; default: return RCL_RET_ERROR; } diff --git a/rcl/test/rcl/test_graph.cpp b/rcl/test/rcl/test_graph.cpp index f24ec6e7c..28f7cdae7 100644 --- a/rcl/test/rcl/test_graph.cpp +++ b/rcl/test/rcl/test_graph.cpp @@ -329,12 +329,12 @@ TEST_F( // unknown node name ret = rcl_get_publisher_names_and_types_by_node( this->node_ptr, &allocator, false, unknown_node_name, "", &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // unknown node namespace ret = rcl_get_publisher_names_and_types_by_node( this->node_ptr, &allocator, false, this->test_graph_node_name, unknown_node_ns, &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // valid call ret = rcl_get_publisher_names_and_types_by_node( @@ -414,12 +414,12 @@ TEST_F( // unknown node name ret = rcl_get_subscriber_names_and_types_by_node( this->node_ptr, &allocator, false, unknown_node_name, "", &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // unknown node namespace ret = rcl_get_subscriber_names_and_types_by_node( this->node_ptr, &allocator, false, this->test_graph_node_name, unknown_node_ns, &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // valid call ret = rcl_get_subscriber_names_and_types_by_node( @@ -496,12 +496,12 @@ TEST_F( // unknown node name ret = rcl_get_service_names_and_types_by_node( this->node_ptr, &allocator, unknown_node_name, "", &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // unknown node namespace ret = rcl_get_service_names_and_types_by_node( this->node_ptr, &allocator, this->test_graph_node_name, unknown_node_ns, &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // valid call ret = rcl_get_service_names_and_types_by_node( @@ -525,6 +525,7 @@ TEST_F( rcl_node_t zero_node = rcl_get_zero_initialized_node(); const char * unknown_node_name = "test_rcl_get_client_names_and_types_by_node"; const char * unknown_node_ns = "/test/namespace"; + rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types(); // invalid node ret = rcl_get_client_names_and_types_by_node( @@ -578,12 +579,12 @@ TEST_F( // unknown node name ret = rcl_get_client_names_and_types_by_node( this->node_ptr, &allocator, unknown_node_name, "", &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // unknown node namespace ret = rcl_get_client_names_and_types_by_node( this->node_ptr, &allocator, this->test_graph_node_name, unknown_node_ns, &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + EXPECT_EQ(RCL_RET_NODE_NAME_NON_EXISTENT, ret) << rcl_get_error_string().str; rcl_reset_error(); // valid call ret = rcl_get_client_names_and_types_by_node(