Capabilities2 0.3.0
Loading...
Searching...
No Matches
published_event.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <rclcpp/rclcpp.hpp>
6#include <capabilities2_msgs/msg/capability_event_stamped.hpp>
7
9{
10
12{
13public:
14 PublishedEvent(rclcpp::Publisher<capabilities2_msgs::msg::CapabilityEventStamped>::SharedPtr event_pub)
15 : EventBase(), event_pub_(event_pub)
16 {
17 }
18
19 ~PublishedEvent() = default;
20
24 void emit(const std::string& connection_id, const uint8_t& event_code,
25 const capabilities2_msgs::msg::Capability& source, const capabilities2_msgs::msg::Capability& target,
26 EventBase::event_callback_t callback) override
27 {
28 // split connection id to get trigger id. Assuming connection_id format is "bond_id/instance_id/target_instance_id"
29 size_t first_pos = connection_id.find('/');
30 size_t second_pos = connection_id.find('/', first_pos + 1);
31
32 std::string instance_id = (second_pos != std::string::npos) ? connection_id.substr(first_pos + 1, second_pos - first_pos - 1) : "";
33
34 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
35 event_msg.header.stamp = rclcpp::Clock().now();
36 event_msg.event.trigger_id = instance_id;
37 event_msg.event.code.code = event_code;
38 event_msg.event.connection.source = source;
39 event_msg.event.connection.target = target;
40
41 // publish event
42 event_pub_->publish(event_msg);
43
44 // call super
45 EventBase::emit(connection_id, event_code, source, target, callback);
46 }
47
53 void on_server_ready(const std::string& msg)
54 {
55 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
56 event_msg.header.stamp = rclcpp::Clock().now();
57 event_msg.event.connection.source.capability = "capabilities2_server";
58 event_msg.event.connection.source.provider = "capabilities2_server";
59 event_msg.event.code.code = capabilities2_msgs::msg::CapabilityEventCode::SERVER_READY;
60 event_msg.event.description = msg;
61
62 event_pub_->publish(event_msg);
63 }
64
70 void on_process_launched(const std::string& pid)
71 {
72 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
73 event_msg.header.stamp = rclcpp::Clock().now();
74 event_msg.event.connection.source.capability = "capabilities2_server";
75 event_msg.event.connection.source.provider = "capabilities2_server";
76 event_msg.event.code.code = capabilities2_msgs::msg::CapabilityEventCode::LAUNCHED;
77 event_msg.event.description = "Process launched with PID: " + pid;
78
79 event_pub_->publish(event_msg);
80 }
81
87 void on_process_terminated(const std::string& pid)
88 {
89 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
90 event_msg.header.stamp = rclcpp::Clock().now();
91 event_msg.event.connection.source.capability = "capabilities2_server";
92 event_msg.event.connection.source.provider = "capabilities2_server";
93 event_msg.event.code.code = capabilities2_msgs::msg::CapabilityEventCode::TERMINATED;
94 event_msg.event.description = "Process terminated with PID: " + pid;
95
96 event_pub_->publish(event_msg);
97 }
98
99 void on_triggered(const std::string& trigger_id)
100 {
101 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
102 event_msg.header.stamp = rclcpp::Clock().now();
103 event_msg.event.connection.source.capability = "capabilities2_server";
104 event_msg.event.connection.source.provider = "capabilities2_server";
105 event_msg.event.code.code = capabilities2_msgs::msg::CapabilityEventCode::TRIGGERED;
106 event_msg.event.description = "Triggered event with ID: " + trigger_id;
107
108 event_pub_->publish(event_msg);
109 }
110
111 void on_connected(const std::string& source, const std::string& target)
112 {
113 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
114 event_msg.header.stamp = rclcpp::Clock().now();
115 event_msg.event.connection.source.capability = "capabilities2_server";
116 event_msg.event.connection.source.provider = "capabilities2_server";
117 event_msg.event.code.code = capabilities2_msgs::msg::CapabilityEventCode::CONNECTED;
118 event_msg.event.description = "Connected event from " + source + " to " + target;
119
120 event_pub_->publish(event_msg);
121 }
122
123 void on_disconnected(const std::string& source, const std::string& target)
124 {
125 capabilities2_msgs::msg::CapabilityEventStamped event_msg;
126 event_msg.header.stamp = rclcpp::Clock().now();
127 event_msg.event.connection.source.capability = "capabilities2_server";
128 event_msg.event.connection.source.provider = "capabilities2_server";
129 event_msg.event.code.code = capabilities2_msgs::msg::CapabilityEventCode::DISCONNECTED;
130 event_msg.event.description = "Disconnected event from " + source + " to " + target;
131
132 event_pub_->publish(event_msg);
133 }
134
135private:
136 // event publisher
137 rclcpp::Publisher<capabilities2_msgs::msg::CapabilityEventStamped>::SharedPtr event_pub_;
138};
139
140} // namespace capabilities2_events
event base class
Definition event_base.hpp:43
std::function< void(const access_id_t &, const capability_str_t &, const target_instance_id_t &, parameter_t)> event_callback_t
Definition event_base.hpp:49
virtual void emit(const std::string &connection_id, const uint8_t &event_code, const capabilities2_msgs::msg::Capability &source, const capabilities2_msgs::msg::Capability &target, event_callback_t callback)
emit an event
Definition event_base.hpp:71
Definition published_event.hpp:12
PublishedEvent(rclcpp::Publisher< capabilities2_msgs::msg::CapabilityEventStamped >::SharedPtr event_pub)
Definition published_event.hpp:14
void on_disconnected(const std::string &source, const std::string &target)
on disconnected event from server
Definition published_event.hpp:123
void emit(const std::string &connection_id, const uint8_t &event_code, const capabilities2_msgs::msg::Capability &source, const capabilities2_msgs::msg::Capability &target, EventBase::event_callback_t callback) override
see EventBase::emit, specialised to publish events
Definition published_event.hpp:24
void on_triggered(const std::string &trigger_id)
on triggered event from server
Definition published_event.hpp:99
void on_process_launched(const std::string &pid)
on process launched event
Definition published_event.hpp:70
void on_process_terminated(const std::string &pid)
on process terminated event
Definition published_event.hpp:87
rclcpp::Publisher< capabilities2_msgs::msg::CapabilityEventStamped >::SharedPtr event_pub_
Definition published_event.hpp:137
void on_server_ready(const std::string &msg)
on server ready event
Definition published_event.hpp:53
void on_connected(const std::string &source, const std::string &target)
on connected event from server
Definition published_event.hpp:111
Definition event_base.hpp:14