Modulo 5.0.0
Loading...
Searching...
No Matches
PredicatesListener.hpp
1#pragma once
2
3#include <future>
4#include <map>
5
6#include <modulo_interfaces/msg/predicate_collection.hpp>
7#include <rclcpp/rclcpp.hpp>
8
9namespace modulo_utils::testutils {
10
11using namespace std::chrono_literals;
12
13class PredicatesListener : public rclcpp::Node {
14public:
16 const std::string& node, const std::vector<std::string>& predicates,
17 const rclcpp::NodeOptions& node_options = rclcpp::NodeOptions());
18
19 void reset_future();
20
21 [[nodiscard]] const std::shared_future<void>& get_predicate_future() const;
22
23 [[nodiscard]] const std::map<std::string, bool>& get_predicate_values() const;
24
25private:
26 std::shared_ptr<rclcpp::Subscription<modulo_interfaces::msg::PredicateCollection>> subscription_;
27 std::map<std::string, bool> predicates_;
28 std::shared_future<void> received_future_;
29 std::promise<void> received_;
30};
31}// namespace modulo_utils::testutils