From d33a46c3b69a3c5307a2ddf3029493279a6981f3 Mon Sep 17 00:00:00 2001 From: Karsten Knese Date: Tue, 19 Jun 2018 00:20:55 +0200 Subject: [PATCH] comply to new subscription template (#500) --- .../include/rclcpp_lifecycle/lifecycle_node.hpp | 3 ++- .../include/rclcpp_lifecycle/lifecycle_node_impl.hpp | 11 ++++++----- rclcpp_lifecycle/test/test_lifecycle_node.cpp | 9 +++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp index e4bf37f..e103aea 100644 --- a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp +++ b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node.hpp @@ -188,7 +188,8 @@ public: const rmw_qos_profile_t & qos_profile = rmw_qos_profile_default, rclcpp::callback_group::CallbackGroup::SharedPtr group = nullptr, bool ignore_local_publications = false, - typename rclcpp::message_memory_strategy::MessageMemoryStrategy::SharedPtr + typename rclcpp::message_memory_strategy::MessageMemoryStrategy< + typename rclcpp::subscription_traits::has_message_type::type, Alloc>::SharedPtr msg_mem_strat = nullptr, std::shared_ptr allocator = nullptr); diff --git a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node_impl.hpp b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node_impl.hpp index 6b683e4..2f8f295 100644 --- a/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node_impl.hpp +++ b/rclcpp_lifecycle/include/rclcpp_lifecycle/lifecycle_node_impl.hpp @@ -76,22 +76,23 @@ LifecycleNode::create_subscription( const rmw_qos_profile_t & qos_profile, rclcpp::callback_group::CallbackGroup::SharedPtr group, bool ignore_local_publications, - typename rclcpp::message_memory_strategy::MessageMemoryStrategy::SharedPtr + typename rclcpp::message_memory_strategy::MessageMemoryStrategy< + typename rclcpp::subscription_traits::has_message_type::type, Alloc>::SharedPtr msg_mem_strat, std::shared_ptr allocator) { + using CallbackMessageT = typename rclcpp::subscription_traits::has_message_type::type; + if (!allocator) { allocator = std::make_shared(); } if (!msg_mem_strat) { using rclcpp::message_memory_strategy::MessageMemoryStrategy; - msg_mem_strat = MessageMemoryStrategy::create_default(); + msg_mem_strat = MessageMemoryStrategy::create_default(); } - return rclcpp::create_subscription< - MessageT, CallbackT, Alloc, - rclcpp::Subscription>( + return rclcpp::create_subscription( this->node_topics_.get(), topic_name, std::forward(callback), diff --git a/rclcpp_lifecycle/test/test_lifecycle_node.cpp b/rclcpp_lifecycle/test/test_lifecycle_node.cpp index 01153e3..1618782 100644 --- a/rclcpp_lifecycle/test/test_lifecycle_node.cpp +++ b/rclcpp_lifecycle/test/test_lifecycle_node.cpp @@ -203,3 +203,12 @@ TEST_F(TestDefaultStateMachine, bad_mood) { // check if all callbacks were successfully overwritten EXPECT_EQ(static_cast(1), test_node->number_of_callbacks); } + +TEST_F(TestDefaultStateMachine, lifecycle_subscriber) { + auto test_node = std::make_shared>("testnode"); + + auto cb = [](const std::shared_ptr msg) {(void) msg;}; + auto lifecycle_sub = test_node->create_subscription("~/empty", cb); + + SUCCEED(); +}