10#ifndef _TOPIC_PUB_SUB_CHECK_BASE_HPP
11#define _TOPIC_PUB_SUB_CHECK_BASE_HPP
13#include <rclcpp/rclcpp.hpp>
47 const std::string topic_name,
const uint32_t timeout_ms,
const size_t expected_count = 1,
57 virtual size_t get_count(rclcpp::Node::SharedPtr node,
const std::string & topic) = 0;
61 std::string status_msg_;
63 bool check_impl(rclcpp::Node::SharedPtr node)
override
66 status_msg_ =
"Topic name not set. Please invoke `set_config()` function.";
70 auto start_time = std::chrono::steady_clock::now();
71 auto timeout_duration = std::chrono::milliseconds(
timeout_ms_);
86 status_msg_ =
"Found " + std::to_string(current_count) +
" " +
get_target_type() +
"(s).";
91 auto elapsed = std::chrono::steady_clock::now() - start_time;
92 if (elapsed > timeout_duration) {
94 status_msg_ =
"Timeout. Found " + std::to_string(current_count) +
" " +
get_target_type() +
95 "(s) (Expected " + mode_str +
" " + std::to_string(
expected_count_) +
").";
99 std::this_thread::sleep_for(std::chrono::milliseconds(100));
103 std::string report_impl([[maybe_unused]] rclcpp::Node::SharedPtr node)
override
115 std::string get_unique_id()
const override
118 "::" + std::to_string(
static_cast<int>(
mode_));
121 size_t get_count(rclcpp::Node::SharedPtr node,
const std::string & topic)
override
123 return node->count_publishers(topic);
126 std::string get_target_type()
const override {
return "Publisher"; }
135 std::string get_unique_id()
const override
138 "::" + std::to_string(
static_cast<int>(
mode_));
141 size_t get_count(rclcpp::Node::SharedPtr node,
const std::string & topic)
override
143 return node->count_subscribers(topic);
146 std::string get_target_type()
const override {
return "Subscriber"; }
Abstract base class for all system check plugins.
Definition: system_check_base.hpp:24
Abstract base class for checking Topic Publisher/Subscriber counts.
Definition: topic_pub_sub_check_base.hpp:32
ComparisonMode mode_
Definition: topic_pub_sub_check_base.hpp:37
uint32_t timeout_ms_
Definition: topic_pub_sub_check_base.hpp:35
size_t expected_count_
Definition: topic_pub_sub_check_base.hpp:36
std::string topic_name_
Definition: topic_pub_sub_check_base.hpp:34
virtual size_t get_count(rclcpp::Node::SharedPtr node, const std::string &topic)=0
void set_config(const std::string topic_name, const uint32_t timeout_ms, const size_t expected_count=1, const ComparisonMode mode=ComparisonMode::EQUAL)
Configure the check settings.
Definition: topic_pub_sub_check_base.hpp:46
virtual std::string get_target_type() const =0
virtual void prepare_check(rclcpp::Node::SharedPtr node) override=0
Prepares the check before execution.
Checks if there are any PUBLISHERS for the specified topic.
Definition: topic_pub_sub_check_base.hpp:113
Checks if there are any SUBSCRIBERS for the specified topic.
Definition: topic_pub_sub_check_base.hpp:133
Definition: action_server_check_base.hpp:25
ComparisonMode
Definition: topic_pub_sub_check_base.hpp:23
Abstruct Class of check process.