Capabilities2 0.3.0
Loading...
Searching...
No Matches
event_base.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <stdexcept>
4#include <string>
5#include <functional>
6
7#include <rclcpp/rclcpp.hpp>
9#include <capabilities2_msgs/msg/capability.hpp>
10#include <capabilities2_msgs/msg/capability_event.hpp>
11#include <capabilities2_msgs/msg/capability_event_code.hpp>
12
14{
21struct event_exception : public std::runtime_error
22{
23 using std::runtime_error::runtime_error;
24
25 event_exception(const std::string& what) : std::runtime_error(what)
26 {
27 }
28
29 virtual const char* what() const noexcept override
30 {
31 return std::runtime_error::what();
32 }
33};
34
43{
44public:
45 typedef std::string capability_str_t;
47 typedef std::string access_id_t;
48 typedef std::string target_instance_id_t;
49 typedef std::function<void(const access_id_t&, const capability_str_t&, const target_instance_id_t&, parameter_t)> event_callback_t;
50
51public:
53 {
54 }
55
56 ~EventBase() = default;
57
71 virtual void emit(const std::string& connection_id, const uint8_t& event_code,
72 const capabilities2_msgs::msg::Capability& source,
73 const capabilities2_msgs::msg::Capability& target, event_callback_t callback)
74 {
75 // extract bond_id from connection_id (format: "bond_id/instance_id/target_instance_id")
76 size_t first_pos = connection_id.find('/');
77
78 std::string bond_id = (first_pos != std::string::npos) ? connection_id.substr(0, first_pos) : connection_id;
79
80 // do callback with bond_id for access control
81 if (callback)
82 {
83 callback(bond_id, target.capability, target.instance_id, capabilities2_events::EventParameters(target));
84 }
85 }
86
92 virtual void on_server_ready(const std::string& msg) = 0;
93
99 virtual void on_process_launched(const std::string& pid) = 0;
100
106 virtual void on_process_terminated(const std::string& pid) = 0;
107
113 virtual void on_triggered(const std::string& trigger_id) = 0;
114
121 virtual void on_connected(const std::string& source, const std::string& target) = 0;
122
129 virtual void on_disconnected(const std::string& source, const std::string& target) = 0;
130};
131
132} // 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 on_process_terminated(const std::string &pid)=0
on process terminated event
std::string access_id_t
Definition event_base.hpp:47
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
EventBase()
Definition event_base.hpp:52
std::string capability_str_t
Definition event_base.hpp:45
virtual void on_connected(const std::string &source, const std::string &target)=0
on connected event from server
capabilities2_events::EventParameters parameter_t
Definition event_base.hpp:46
virtual void on_process_launched(const std::string &pid)=0
on process launched event
virtual void on_disconnected(const std::string &source, const std::string &target)=0
on disconnected event from server
std::string target_instance_id_t
Definition event_base.hpp:48
virtual void on_server_ready(const std::string &msg)=0
on server ready event
virtual void on_triggered(const std::string &trigger_id)=0
on triggered event from server
Definition event_base.hpp:14
capability options for a capability runner given by interface and provider
Definition event_parameters.hpp:167
event exception
Definition event_base.hpp:22
virtual const char * what() const noexcept override
Definition event_base.hpp:29
event_exception(const std::string &what)
Definition event_base.hpp:25