From a2e93cd0354921d9a018d644908b884eab411383 Mon Sep 17 00:00:00 2001 From: Barry Xu Date: Thu, 17 Jun 2021 21:45:49 +0800 Subject: [PATCH] Add rmw_publisher_wait_for_all_acked (#188) Signed-off-by: Barry Xu --- rmw_implementation/src/functions.cpp | 7 +++++++ test_rmw_implementation/test/test_publisher.cpp | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/rmw_implementation/src/functions.cpp b/rmw_implementation/src/functions.cpp index 618c8f24..4a74ea90 100644 --- a/rmw_implementation/src/functions.cpp +++ b/rmw_implementation/src/functions.cpp @@ -359,6 +359,11 @@ RMW_INTERFACE_FN( rmw_ret_t, RMW_RET_ERROR, 1, ARG_TYPES(const rmw_publisher_t *)) +RMW_INTERFACE_FN( + rmw_publisher_wait_for_all_acked, + rmw_ret_t, RMW_RET_ERROR, + 2, ARG_TYPES(const rmw_publisher_t *, rmw_time_t)) + RMW_INTERFACE_FN( rmw_serialize, rmw_ret_t, RMW_RET_ERROR, @@ -702,6 +707,7 @@ void prefetch_symbols(void) GET_SYMBOL(rmw_publisher_event_init) GET_SYMBOL(rmw_publish_serialized_message) GET_SYMBOL(rmw_publisher_assert_liveliness) + GET_SYMBOL(rmw_publisher_wait_for_all_acked) GET_SYMBOL(rmw_get_serialized_message_size) GET_SYMBOL(rmw_serialize) GET_SYMBOL(rmw_deserialize) @@ -804,6 +810,7 @@ unload_library() symbol_rmw_publish_serialized_message = nullptr; symbol_rmw_get_serialized_message_size = nullptr; symbol_rmw_publisher_assert_liveliness = nullptr; + symbol_rmw_publisher_wait_for_all_acked = nullptr; symbol_rmw_serialize = nullptr; symbol_rmw_deserialize = nullptr; symbol_rmw_init_subscription_allocation = nullptr; diff --git a/test_rmw_implementation/test/test_publisher.cpp b/test_rmw_implementation/test/test_publisher.cpp index f217bc81..97e1dc92 100644 --- a/test_rmw_implementation/test/test_publisher.cpp +++ b/test_rmw_implementation/test/test_publisher.cpp @@ -527,6 +527,15 @@ TEST_F(CLASSNAME(TestPublisherUse, RMW_IMPLEMENTATION), publish_serialized_with_ }); } +TEST_F(CLASSNAME(TestPublisherUse, RMW_IMPLEMENTATION), wait_for_all_acked_with_best_effort) { + // For best effort, alway return RMW_RET_OK immediately + rmw_ret_t ret = rmw_publisher_wait_for_all_acked(pub, {0, 0}); + EXPECT_EQ(ret, RMW_RET_OK); + + ret = rmw_publisher_wait_for_all_acked(nullptr, {0, 0}); + EXPECT_EQ(ret, RMW_RET_INVALID_ARGUMENT); +} + class CLASSNAME (TestPublisherUseLoan, RMW_IMPLEMENTATION) : public CLASSNAME(TestPublisherUse, RMW_IMPLEMENTATION)