From b86a6e2f77868498f5bf4270e959038822e13f2c Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Mon, 11 Sep 2023 10:52:18 -0700 Subject: [PATCH 1/4] Revert "Revert "Decouple rosout publisher init from node init. (#351)" (#352)" This reverts commit 2648503e3fdcf1308bd1d3748e1f4792285cd1b1. Signed-off-by: Tomoya Fujita --- rclc/src/rclc/node.c | 20 +++++++++++++++++++ rclc/test/rclc/test_executor.cpp | 6 ++++++ rclc_examples/src/example_executor_only_rcl.c | 9 +++++++++ rclc_lifecycle/test/test_lifecycle.cpp | 15 ++++++++++++++ 4 files changed, 50 insertions(+) diff --git a/rclc/src/rclc/node.c b/rclc/src/rclc/node.c index 283777ef..80c7587d 100644 --- a/rclc/src/rclc/node.c +++ b/rclc/src/rclc/node.c @@ -17,6 +17,8 @@ #include "rclc/node.h" #include +#include +#include #include rcl_ret_t @@ -79,6 +81,24 @@ rclc_node_init_with_options( node_ops); if (rc != RCL_RET_OK) { PRINT_RCLC_WARN(rclc_node_init_with_options, rcl_node_init); + return rc; } + + // The initialization for the rosout publisher + if (rcl_logging_rosout_enabled() && node_ops->enable_rosout) { + rc = rcl_logging_rosout_init_publisher_for_node(node); + if (rc != RCL_RET_OK) { + PRINT_RCLC_WARN( + rclc_node_init_with_options, + rcl_logging_rosout_init_publisher_for_node); + if (rcl_logging_rosout_fini_publisher_for_node(node) != RCL_RET_OK) { + PRINT_RCLC_WARN( + rclc_node_init_with_options, + rcl_logging_rosout_fini_publisher_for_node); + } + return rc; + } + } + return rc; } diff --git a/rclc/test/rclc/test_executor.cpp b/rclc/test/rclc/test_executor.cpp index 08cfbf5e..18639eb0 100644 --- a/rclc/test/rclc/test_executor.cpp +++ b/rclc/test/rclc/test_executor.cpp @@ -21,6 +21,8 @@ #include #include +#include "rcl/logging.h" +#include "rcl/logging_rosout.h" #include "rclc/executor.h" #include "osrf_testing_tools_cpp/scope_exit.hpp" #include "rcutils/time.h" @@ -545,6 +547,10 @@ class TestDefaultExecutor : public ::testing::Test rcl_node_options_t node_options = rcl_node_get_default_options(); ret = rcl_node_init(&this->node, name, "", &this->context, &node_options); ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; + if (rcl_logging_rosout_enabled() && node_options.enable_rosout) { + ret = rcl_logging_rosout_init_publisher_for_node(&this->node); + ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; + } const rcl_node_options_t * node_ops = rcl_node_get_options(&this->node); this->allocator_ptr = &node_ops->allocator; diff --git a/rclc_examples/src/example_executor_only_rcl.c b/rclc_examples/src/example_executor_only_rcl.c index a72202dd..a285d626 100644 --- a/rclc_examples/src/example_executor_only_rcl.c +++ b/rclc_examples/src/example_executor_only_rcl.c @@ -15,6 +15,8 @@ #include +#include +#include #include #include @@ -83,6 +85,13 @@ int main(int argc, const char * argv[]) printf("Error in rcl_node_init\n"); return -1; } + if (rcl_logging_rosout_enabled() && node_ops.enable_rosout) { + rc = rcl_logging_rosout_init_publisher_for_node(&my_node); + if (rc != RCL_RET_OK) { + printf("Error in rcl_logging_rosout_init_publisher_for_node\n"); + return -1; + } + } // create a publisher to publish topic 'topic_0' with type std_msg::msg::String // my_pub is global, so that the timer callback can access this publisher. diff --git a/rclc_lifecycle/test/test_lifecycle.cpp b/rclc_lifecycle/test/test_lifecycle.cpp index 2e006acd..b2d06826 100644 --- a/rclc_lifecycle/test/test_lifecycle.cpp +++ b/rclc_lifecycle/test/test_lifecycle.cpp @@ -23,6 +23,9 @@ extern "C" #include #include +#include +#include + #include "rclc_lifecycle/rclc_lifecycle.h" } @@ -63,6 +66,9 @@ TEST(TestRclcLifecycle, lifecycle_node) { rcl_node_t my_node = rcl_get_zero_initialized_node(); rcl_node_options_t node_ops = rcl_node_get_default_options(); res += rcl_node_init(&my_node, "lifecycle_node", "rclc", &context, &node_ops); + if (rcl_logging_rosout_enabled() && node_ops.enable_rosout) { + res += rcl_logging_rosout_init_publisher_for_node(&my_node); + } rclc_lifecycle_node_t lifecycle_node; rcl_lifecycle_state_machine_t state_machine = rcl_lifecycle_get_zero_initialized_state_machine(); @@ -100,6 +106,9 @@ TEST(TestRclcLifecycle, lifecycle_node_transitions) { rcl_node_t my_node = rcl_get_zero_initialized_node(); rcl_node_options_t node_ops = rcl_node_get_default_options(); res += rcl_node_init(&my_node, "lifecycle_node", "rclc", &context, &node_ops); + if (rcl_logging_rosout_enabled() && node_ops.enable_rosout) { + res += rcl_logging_rosout_init_publisher_for_node(&my_node); + } rclc_lifecycle_node_t lifecycle_node; rcl_lifecycle_state_machine_t state_machine = rcl_lifecycle_get_zero_initialized_state_machine(); @@ -170,6 +179,9 @@ TEST(TestRclcLifecycle, lifecycle_node_callbacks) { rcl_node_t my_node = rcl_get_zero_initialized_node(); rcl_node_options_t node_ops = rcl_node_get_default_options(); res += rcl_node_init(&my_node, "lifecycle_node", "rclc", &context, &node_ops); + if (rcl_logging_rosout_enabled() && node_ops.enable_rosout) { + res += rcl_logging_rosout_init_publisher_for_node(&my_node); + } rclc_lifecycle_node_t lifecycle_node; rcl_lifecycle_state_machine_t state_machine = rcl_lifecycle_get_zero_initialized_state_machine(); @@ -235,6 +247,9 @@ TEST(TestRclcLifecycle, lifecycle_node_servers) { rcl_node_t my_node = rcl_get_zero_initialized_node(); rcl_node_options_t node_ops = rcl_node_get_default_options(); res += rcl_node_init(&my_node, "lifecycle_node", "rclc", &context, &node_ops); + if (rcl_logging_rosout_enabled() && node_ops.enable_rosout) { + res += rcl_logging_rosout_init_publisher_for_node(&my_node); + } rclc_lifecycle_node_t lifecycle_node; rcl_lifecycle_state_machine_t state_machine = rcl_lifecycle_get_zero_initialized_state_machine(); From 383545c26e6f77e2f72d01cd8976107b1264a2ed Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Mon, 11 Sep 2023 14:40:06 -0700 Subject: [PATCH 2/4] Decouple rosout publisher fini from node fini. Signed-off-by: Tomoya Fujita --- rclc/include/rclc/node.h | 2 ++ rclc/src/rclc/node.c | 2 -- rclc/test/rclc/test_action_client.cpp | 8 ++++++++ rclc/test/rclc/test_action_server.cpp | 8 ++++++++ rclc/test/rclc/test_client.cpp | 12 ++++++++++++ rclc/test/rclc/test_executor.cpp | 11 +++++++++-- rclc/test/rclc/test_node.cpp | 12 ++++++++++++ rclc/test/rclc/test_publisher.cpp | 12 ++++++++++++ rclc/test/rclc/test_service.cpp | 12 ++++++++++++ rclc/test/rclc/test_subscription.cpp | 12 ++++++++++++ rclc/test/rclc/test_timer.cpp | 4 ++++ rclc_examples/src/example_action_client.c | 1 + rclc_examples/src/example_action_server.c | 1 + rclc_examples/src/example_client_node.c | 1 + rclc_examples/src/example_executor.c | 1 + rclc_examples/src/example_executor_only_rcl.c | 5 +++-- rclc_examples/src/example_executor_trigger.c | 1 + rclc_examples/src/example_lifecycle_node.c | 1 + rclc_examples/src/example_parameter_server.c | 1 + rclc_examples/src/example_pingpong.cpp | 6 +++++- rclc_examples/src/example_service_node.c | 1 + .../example_short_timer_long_subscription.c | 1 + rclc_examples/src/example_sub_context.c | 1 + rclc_lifecycle/test/test_lifecycle.cpp | 19 ++++++++++++++++--- .../test/rclc_parameter/test_parameter.cpp | 3 +++ 25 files changed, 128 insertions(+), 10 deletions(-) diff --git a/rclc/include/rclc/node.h b/rclc/include/rclc/node.h index 9149a932..aab8392b 100644 --- a/rclc/include/rclc/node.h +++ b/rclc/include/rclc/node.h @@ -22,6 +22,8 @@ extern "C" { #endif #include +#include +#include #include #include diff --git a/rclc/src/rclc/node.c b/rclc/src/rclc/node.c index 80c7587d..0996460d 100644 --- a/rclc/src/rclc/node.c +++ b/rclc/src/rclc/node.c @@ -17,8 +17,6 @@ #include "rclc/node.h" #include -#include -#include #include rcl_ret_t diff --git a/rclc/test/rclc/test_action_client.cpp b/rclc/test/rclc/test_action_client.cpp index e8272f48..85ce635a 100644 --- a/rclc/test/rclc/test_action_client.cpp +++ b/rclc/test/rclc/test_action_client.cpp @@ -127,6 +127,10 @@ TEST(Test, rclc_action_client) { // clean up rc = rclc_action_client_fini(&action_client, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -245,6 +249,10 @@ class ActionClientTest : public ::testing::Test rc = rclc_action_client_fini(&action_client, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc/test/rclc/test_action_server.cpp b/rclc/test/rclc/test_action_server.cpp index 2f6ac0ae..1d60d2ee 100644 --- a/rclc/test/rclc/test_action_server.cpp +++ b/rclc/test/rclc/test_action_server.cpp @@ -140,6 +140,10 @@ TEST(Test, rclc_action_server) { // clean up rc = rclc_action_server_fini(&action_server, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -222,6 +226,10 @@ class ActionServerTest : public ::testing::Test rc = rclc_action_server_fini(&action_server, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc/test/rclc/test_client.cpp b/rclc/test/rclc/test_client.cpp index 04fa076f..47f349e4 100644 --- a/rclc/test/rclc/test_client.cpp +++ b/rclc/test/rclc/test_client.cpp @@ -70,6 +70,10 @@ TEST(Test, rclc_client_init_default) { // clean up rc = rcl_client_fini(&client, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -133,6 +137,10 @@ TEST(Test, rclc_client_init_best_effort) { // clean up rc = rcl_client_fini(&client, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -200,6 +208,10 @@ TEST(Test, rclc_client_init_qos) { // clean up rc = rcl_client_fini(&client, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc/test/rclc/test_executor.cpp b/rclc/test/rclc/test_executor.cpp index 18639eb0..ae41d6a7 100644 --- a/rclc/test/rclc/test_executor.cpp +++ b/rclc/test/rclc/test_executor.cpp @@ -21,9 +21,8 @@ #include #include -#include "rcl/logging.h" -#include "rcl/logging_rosout.h" #include "rclc/executor.h" +#include "rclc/node.h" #include "osrf_testing_tools_cpp/scope_exit.hpp" #include "rcutils/time.h" @@ -597,6 +596,14 @@ class TestDefaultExecutor : public ::testing::Test EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; ret = rcl_clock_fini(&this->clock); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; + if (rcl_logging_rosout_enabled()) { + ret = rcl_logging_rosout_fini_publisher_for_node(&this->node); + EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; + } + if (rcl_logging_rosout_enabled()) { + ret = rcl_logging_rosout_fini_publisher_for_node(&this->node); + EXPECT_EQ(RCL_RET_OK, ret); + } ret = rcl_node_fini(&this->node); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; ret = rcl_shutdown(&this->context); diff --git a/rclc/test/rclc/test_node.cpp b/rclc/test/rclc/test_node.cpp index 7dfcd01d..c296a7d8 100644 --- a/rclc/test/rclc/test_node.cpp +++ b/rclc/test/rclc/test_node.cpp @@ -38,6 +38,10 @@ TEST(Test, rclc_node_init_default) { rcutils_reset_error(); // test case: null pointer for name + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); @@ -56,6 +60,10 @@ TEST(Test, rclc_node_init_default) { rcutils_reset_error(); // clean up + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rcutils_reset_error(); @@ -106,6 +114,10 @@ TEST(Test, rclc_node_init_with_options) { EXPECT_EQ(RCL_RET_OK, rc); // clean up + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rcutils_reset_error(); diff --git a/rclc/test/rclc/test_publisher.cpp b/rclc/test/rclc/test_publisher.cpp index c9faabb5..3bba2f68 100644 --- a/rclc/test/rclc/test_publisher.cpp +++ b/rclc/test/rclc/test_publisher.cpp @@ -54,6 +54,10 @@ TEST(Test, rclc_publisher_init_default) { // clean up rc = rcl_publisher_fini(&publisher, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -99,6 +103,10 @@ TEST(Test, rclc_publisher_init_best_effort) { // clean up rc = rcl_publisher_fini(&publisher, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -149,6 +157,10 @@ TEST(Test, rclc_publisher_init_qos) { // clean up rc = rcl_publisher_fini(&publisher, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc/test/rclc/test_service.cpp b/rclc/test/rclc/test_service.cpp index 49de91cf..8997191e 100644 --- a/rclc/test/rclc/test_service.cpp +++ b/rclc/test/rclc/test_service.cpp @@ -63,6 +63,10 @@ TEST(Test, rclc_service_init_default) { // clean up rc = rcl_service_fini(&service, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -119,6 +123,10 @@ TEST(Test, rclc_service_init_best_effort) { // clean up rc = rcl_service_fini(&service, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -178,6 +186,10 @@ TEST(Test, rclc_service_init_qos) { // clean up rc = rcl_service_fini(&service, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc/test/rclc/test_subscription.cpp b/rclc/test/rclc/test_subscription.cpp index 45723752..9af57dcf 100644 --- a/rclc/test/rclc/test_subscription.cpp +++ b/rclc/test/rclc/test_subscription.cpp @@ -53,6 +53,10 @@ TEST(Test, rclc_subscription_init_default) { // clean up rc = rcl_subscription_fini(&subscription, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -98,6 +102,10 @@ TEST(Test, rclc_subscription_init_best_effort) { // clean up rc = rcl_subscription_fini(&subscription, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); @@ -146,6 +154,10 @@ TEST(Test, rclc_subscription_init_qos) { // clean up rc = rcl_subscription_fini(&subscription, &node); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc/test/rclc/test_timer.cpp b/rclc/test/rclc/test_timer.cpp index 41e38cf6..17f8bf0a 100644 --- a/rclc/test/rclc/test_timer.cpp +++ b/rclc/test/rclc/test_timer.cpp @@ -52,6 +52,10 @@ TEST(Test, rclc_timer_init_default2) { // clean up rc = rcl_timer_fini(&timer); EXPECT_EQ(RCL_RET_OK, rc); + if (rcl_logging_rosout_enabled()) { + rc = rcl_logging_rosout_fini_publisher_for_node(&node); + EXPECT_EQ(RCL_RET_OK, rc); + } rc = rcl_node_fini(&node); EXPECT_EQ(RCL_RET_OK, rc); rc = rclc_support_fini(&support); diff --git a/rclc_examples/src/example_action_client.c b/rclc_examples/src/example_action_client.c index e87a608e..223d1efb 100644 --- a/rclc_examples/src/example_action_client.c +++ b/rclc_examples/src/example_action_client.c @@ -207,6 +207,7 @@ int main() // clean up rclc_executor_fini(&executor); + (void)!rcl_logging_rosout_fini_publisher_for_node(&node); (void)!rcl_node_fini(&node); return 0; diff --git a/rclc_examples/src/example_action_server.c b/rclc_examples/src/example_action_server.c index 4595db0e..aa1c0471 100644 --- a/rclc_examples/src/example_action_server.c +++ b/rclc_examples/src/example_action_server.c @@ -166,6 +166,7 @@ int main() // clean up rclc_executor_fini(&executor); + (void)!rcl_logging_rosout_fini_publisher_for_node(&node); (void)!rcl_node_fini(&node); return 0; diff --git a/rclc_examples/src/example_client_node.c b/rclc_examples/src/example_client_node.c index 124fe7a7..aeba58e7 100644 --- a/rclc_examples/src/example_client_node.c +++ b/rclc_examples/src/example_client_node.c @@ -84,5 +84,6 @@ int main(int argc, const char * const * argv) rclc_executor_spin(&executor); RCCHECK(rcl_client_fini(&client, &node)); + RCCHECK(rcl_logging_rosout_fini_publisher_for_node(&node)); RCCHECK(rcl_node_fini(&node)); } diff --git a/rclc_examples/src/example_executor.c b/rclc_examples/src/example_executor.c index cf40fdaf..55a8f8f9 100644 --- a/rclc_examples/src/example_executor.c +++ b/rclc_examples/src/example_executor.c @@ -169,6 +169,7 @@ int main(int argc, const char * argv[]) rc += rcl_publisher_fini(&my_pub, &my_node); rc += rcl_timer_fini(&my_timer); rc += rcl_subscription_fini(&my_sub, &my_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); rc += rcl_node_fini(&my_node); rc += rclc_support_fini(&support); diff --git a/rclc_examples/src/example_executor_only_rcl.c b/rclc_examples/src/example_executor_only_rcl.c index a285d626..e2ce0e58 100644 --- a/rclc_examples/src/example_executor_only_rcl.c +++ b/rclc_examples/src/example_executor_only_rcl.c @@ -15,8 +15,6 @@ #include -#include -#include #include #include @@ -205,6 +203,9 @@ int main(int argc, const char * argv[]) rc += rcl_publisher_fini(&my_pub, &my_node); rc += rcl_timer_fini(&my_timer); rc += rcl_subscription_fini(&my_sub, &my_node); + if (rcl_logging_rosout_enabled()) { + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); + } rc += rcl_node_fini(&my_node); rc += rcl_init_options_fini(&init_options); std_msgs__msg__String__fini(&pub_msg); diff --git a/rclc_examples/src/example_executor_trigger.c b/rclc_examples/src/example_executor_trigger.c index 400260e4..cda24db3 100644 --- a/rclc_examples/src/example_executor_trigger.c +++ b/rclc_examples/src/example_executor_trigger.c @@ -392,6 +392,7 @@ int main(int argc, const char * argv[]) rc += rcl_timer_fini(&my_int_timer); rc += rcl_subscription_fini(&my_string_sub, &my_node); rc += rcl_subscription_fini(&my_int_sub, &my_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); rc += rcl_node_fini(&my_node); rc += rclc_support_fini(&support); diff --git a/rclc_examples/src/example_lifecycle_node.c b/rclc_examples/src/example_lifecycle_node.c index abb6cab0..65ad74aa 100644 --- a/rclc_examples/src/example_lifecycle_node.c +++ b/rclc_examples/src/example_lifecycle_node.c @@ -132,6 +132,7 @@ int main(int argc, const char * argv[]) // Cleanup printf("cleaning up...\n"); rc = rclc_lifecycle_node_fini(&lifecycle_node, &allocator); + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); rc += rcl_node_fini(&my_node); rc += rclc_executor_fini(&executor); rc += rclc_support_fini(&support); diff --git a/rclc_examples/src/example_parameter_server.c b/rclc_examples/src/example_parameter_server.c index 15209823..aedd95e1 100644 --- a/rclc_examples/src/example_parameter_server.c +++ b/rclc_examples/src/example_parameter_server.c @@ -144,6 +144,7 @@ int main() // clean up rc = rclc_executor_fini(&executor); rc += rclc_parameter_server_fini(¶m_server, &node); + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); rc += rcl_node_fini(&node); if (rc != RCL_RET_OK) { diff --git a/rclc_examples/src/example_pingpong.cpp b/rclc_examples/src/example_pingpong.cpp index 69fdfc79..09b4d3c3 100644 --- a/rclc_examples/src/example_pingpong.cpp +++ b/rclc_examples/src/example_pingpong.cpp @@ -348,6 +348,8 @@ int main(int argc, const char * argv[]) rc += rcl_timer_fini(&pong_timer); rc += rcl_subscription_fini(&pong_subscription, &ping_node); rc += rcl_subscription_fini(&ping_subscription, &pong_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&ping_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&pong_node); rc += rcl_node_fini(&ping_node); rc += rcl_node_fini(&pong_node); rc += rclc_support_fini(&support); @@ -439,6 +441,8 @@ int main(int argc, const char * argv[]) rc += rcl_timer_fini(&pong_timer); rc += rcl_subscription_fini(&pong_subscription, &ping_node); rc += rcl_subscription_fini(&ping_subscription, &pong_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&ping_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&pong_node); rc += rcl_node_fini(&ping_node); rc += rcl_node_fini(&pong_node); rc += rclc_support_fini(&support); @@ -456,4 +460,4 @@ int main(int argc, const char * argv[]) } return 0; -} \ No newline at end of file +} diff --git a/rclc_examples/src/example_service_node.c b/rclc_examples/src/example_service_node.c index faa487b2..ec6e7b68 100644 --- a/rclc_examples/src/example_service_node.c +++ b/rclc_examples/src/example_service_node.c @@ -84,5 +84,6 @@ int main(int argc, const char * const * argv) RCSOFTCHECK(rclc_executor_spin(&executor)); RCCHECK(rcl_service_fini(&service, &node)); + RCCHECK(rcl_logging_rosout_fini_publisher_for_node(&node)); RCCHECK(rcl_node_fini(&node)); } diff --git a/rclc_examples/src/example_short_timer_long_subscription.c b/rclc_examples/src/example_short_timer_long_subscription.c index 746b0374..e0392c27 100644 --- a/rclc_examples/src/example_short_timer_long_subscription.c +++ b/rclc_examples/src/example_short_timer_long_subscription.c @@ -198,6 +198,7 @@ int main(int argc, const char * argv[]) rc += rcl_publisher_fini(&my_pub, &my_node); rc += rcl_timer_fini(&my_timer); rc += rcl_subscription_fini(&my_sub, &my_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); rc += rcl_node_fini(&my_node); rc += rclc_support_fini(&support); diff --git a/rclc_examples/src/example_sub_context.c b/rclc_examples/src/example_sub_context.c index dc169d59..2caf5829 100644 --- a/rclc_examples/src/example_sub_context.c +++ b/rclc_examples/src/example_sub_context.c @@ -195,6 +195,7 @@ int main(int argc, const char * argv[]) rc += rcl_publisher_fini(&(my_pubs[i]), &my_node); rc += rcl_subscription_fini(&(my_subs[i]), &my_node); } + rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); rc += rcl_node_fini(&my_node); rc += rclc_support_fini(&support); diff --git a/rclc_lifecycle/test/test_lifecycle.cpp b/rclc_lifecycle/test/test_lifecycle.cpp index b2d06826..03aa24b4 100644 --- a/rclc_lifecycle/test/test_lifecycle.cpp +++ b/rclc_lifecycle/test/test_lifecycle.cpp @@ -23,9 +23,6 @@ extern "C" #include #include -#include -#include - #include "rclc_lifecycle/rclc_lifecycle.h" } @@ -87,6 +84,10 @@ TEST(TestRclcLifecycle, lifecycle_node) { rcl_lifecycle_state_machine_is_initialized(lifecycle_node.state_machine)); // clean up + if (rcl_logging_rosout_enabled()) { + res = rcl_logging_rosout_fini_publisher_for_node(&my_node); + EXPECT_EQ(RCL_RET_OK, res); + } res = rcl_node_fini(&my_node); EXPECT_EQ(RCL_RET_OK, res); res = rcl_node_options_fini(&node_ops); @@ -160,6 +161,10 @@ TEST(TestRclcLifecycle, lifecycle_node_transitions) { lifecycle_msgs__msg__State__PRIMARY_STATE_UNCONFIGURED, lifecycle_node.state_machine->current_state->id); + if (rcl_logging_rosout_enabled()) { + res = rcl_logging_rosout_fini_publisher_for_node(&my_node); + EXPECT_EQ(RCL_RET_OK, res); + } res = rcl_node_fini(&my_node); EXPECT_EQ(RCL_RET_OK, res); res = rcl_node_options_fini(&node_ops); @@ -228,6 +233,10 @@ TEST(TestRclcLifecycle, lifecycle_node_callbacks) { EXPECT_EQ(RCL_RET_OK, res); EXPECT_EQ(15, callback_mockup_counter); + if (rcl_logging_rosout_enabled()) { + res = rcl_logging_rosout_fini_publisher_for_node(&my_node); + EXPECT_EQ(RCL_RET_OK, res); + } res = rcl_node_fini(&my_node); EXPECT_EQ(RCL_RET_OK, res); res = rcl_node_options_fini(&node_ops); @@ -301,6 +310,10 @@ TEST(TestRclcLifecycle, lifecycle_node_servers) { // Cleanup res = rclc_lifecycle_node_fini(&lifecycle_node, &allocator); EXPECT_EQ(RCL_RET_OK, res); + if (rcl_logging_rosout_enabled()) { + res = rcl_logging_rosout_fini_publisher_for_node(&my_node); + EXPECT_EQ(RCL_RET_OK, res); + } res = rcl_node_fini(&my_node); EXPECT_EQ(RCL_RET_OK, res); res = rclc_executor_fini(&executor); diff --git a/rclc_parameter/test/rclc_parameter/test_parameter.cpp b/rclc_parameter/test/rclc_parameter/test_parameter.cpp index ebe30f5b..9910f693 100644 --- a/rclc_parameter/test/rclc_parameter/test_parameter.cpp +++ b/rclc_parameter/test/rclc_parameter/test_parameter.cpp @@ -63,6 +63,7 @@ TEST(ParameterTestUnitary, rclc_parameter_server_init_default) { // Destroy parameter server ASSERT_EQ(rclc_parameter_server_fini(¶m_server, &node), RCL_RET_OK); ASSERT_EQ(rclc_executor_fini(&executor), RCL_RET_OK); + ASSERT_EQ(rcl_logging_rosout_fini_publisher_for_node(&node), RCL_RET_OK); ASSERT_EQ(rcl_node_fini(&node), RCL_RET_OK); } @@ -103,6 +104,7 @@ TEST(ParameterTestUnitary, rclc_add_parameter) { // Destroy parameter server ASSERT_EQ(rclc_parameter_server_fini(¶m_server, &node), RCL_RET_OK); + ASSERT_EQ(rcl_logging_rosout_fini_publisher_for_node(&node), RCL_RET_OK); ASSERT_EQ(rcl_node_fini(&node), RCL_RET_OK); } @@ -178,6 +180,7 @@ class ParameterTestBase : public ::testing::TestWithParam Date: Wed, 20 Sep 2023 21:06:51 -0700 Subject: [PATCH 3/4] address review comment. Signed-off-by: Tomoya Fujita --- rclc_examples/src/example_parameter_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rclc_examples/src/example_parameter_server.c b/rclc_examples/src/example_parameter_server.c index aedd95e1..b064f2f4 100644 --- a/rclc_examples/src/example_parameter_server.c +++ b/rclc_examples/src/example_parameter_server.c @@ -144,7 +144,7 @@ int main() // clean up rc = rclc_executor_fini(&executor); rc += rclc_parameter_server_fini(¶m_server, &node); - rc += rcl_logging_rosout_fini_publisher_for_node(&my_node); + rc += rcl_logging_rosout_fini_publisher_for_node(&node); rc += rcl_node_fini(&node); if (rc != RCL_RET_OK) { From 9af12edcf70a49c31f801ddd264bb6d86d4c3117 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Wed, 20 Sep 2023 23:50:13 -0700 Subject: [PATCH 4/4] fix implicit-function-declaration warning. Signed-off-by: Tomoya Fujita --- rclc_examples/src/example_executor_only_rcl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/rclc_examples/src/example_executor_only_rcl.c b/rclc_examples/src/example_executor_only_rcl.c index e2ce0e58..78cd6c66 100644 --- a/rclc_examples/src/example_executor_only_rcl.c +++ b/rclc_examples/src/example_executor_only_rcl.c @@ -16,6 +16,7 @@ #include #include +#include #include // these data structures for the publisher and subscriber are global, so that