15 #ifndef RCLCPP__CREATE_SUBSCRIPTION_HPP_
16 #define RCLCPP__CREATE_SUBSCRIPTION_HPP_
71 typename CallbackMessageT =
84 CallbackT && callback,
88 typename MessageMemoryStrategyT::SharedPtr msg_mem_strat = (
89 MessageMemoryStrategyT::create_default()
97 subscription_topic_stats =
nullptr;
101 *node_topics->get_node_base_interface()))
105 "topic_stats_options.publish_period must be greater than 0, specified value of " +
106 std::to_string(options.topic_stats_options.publish_period.count()) +
111 create_publisher<statistics_msgs::msg::MetricsMessage>(
113 options.topic_stats_options.publish_topic,
118 >(node_topics->get_node_base_interface()->get_name(), publisher);
120 auto sub_call_back = [subscription_topic_stats]() {
121 subscription_topic_stats->publish_message();
124 auto node_timer_interface = node_topics->get_node_timers_interface();
127 std::chrono::duration_cast<std::chrono::nanoseconds>(
128 options.topic_stats_options.publish_period),
130 options.callback_group,
131 node_topics->get_node_base_interface(),
135 subscription_topic_stats->set_publisher_timer(timer);
138 auto factory = rclcpp::create_subscription_factory<MessageT>(
139 std::forward<CallbackT>(callback),
142 subscription_topic_stats
145 auto sub = node_topics->create_subscription(topic_name, factory, qos);
146 node_topics->add_subscription(sub, options.callback_group);
148 return std::dynamic_pointer_cast<SubscriptionT>(sub);
153 #endif // RCLCPP__CREATE_SUBSCRIPTION_HPP_