RTC Toolkit 4.0.1
Loading...
Searching...
No Matches
alertServiceIf.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_COMPONENTFRAMEWORK_ALERTSERVICEIF_HPP
13#define RTCTK_COMPONENTFRAMEWORK_ALERTSERVICEIF_HPP
14#include <iosfwd>
15#include <string>
16#include <sys/types.h>
17
18#include <boost/signals2/signal.hpp>
19
21
23
32};
33
49public:
51
55 ~AlertSource() noexcept;
56
62 AlertSource(AlertSource&& other) noexcept;
63
69 AlertSource& operator=(AlertSource&& other) noexcept;
70
74 using TimePoint = std::chrono::system_clock::time_point;
75
83 void Reset() {
84 Set(false);
85 }
86
96 void Set(bool state = true);
97
103 bool IsSet() const noexcept {
104 return m_state;
105 }
106
112 std::pair<bool, TimePoint> GetStatus() const noexcept {
113 return {m_state, m_since};
114 }
115
123 using Signal = boost::signals2::signal<void(bool, TimePoint)>;
124
131 boost::signals2::connection Connect(Signal::slot_type const& slot);
132
133private:
134 bool m_state;
135 TimePoint m_since;
136 Signal m_signal;
137};
138
153public:
159 explicit AlertDescription(std::string id, std::string description) noexcept;
160
164 std::string const& GetId() const noexcept {
165 return m_id;
166 }
167
171 std::string const& GetDescription() const noexcept {
172 return m_description;
173 }
174
175private:
176 std::string m_id;
177 std::string m_description;
178};
179
188public:
189 virtual ~AlertSourceFactoryIf() noexcept = default;
200 [[nodiscard]] virtual AlertSource MakeAlertSource(AlertDescription const& description) = 0;
201};
202
210public:
211 virtual ~AlertStatusObserverIf() noexcept = default;
212
220 using ReducedStatus = std::optional<bool>;
221
225 using TimePoint = std::chrono::system_clock::time_point;
226
230 struct AlertStatus {
234 bool status;
235
240
245 };
246
251
264 boost::signals2::signal<void(ReducedStatus const&, std::vector<AlertStatus> const&)>;
265
274 virtual boost::signals2::connection
275 ConnectReducedStatus(ReducedStatusSignal::slot_type slot) = 0;
277
282
285 [[nodiscard]] virtual ReducedStatus GetReducedStatus() const = 0;
286
293 [[nodiscard]] virtual std::vector<AlertStatus> GetAlertStatuses() const = 0;
295};
296
316public:
318 virtual ~AlertServiceIf() noexcept = default;
319};
320
321std::ostream& operator<<(std::ostream& os, AlertServiceIf::AlertStatus const& status);
322
323} // namespace rtctk::componentFramework
324
325#endif // RTCTK_COMPONENTFRAMEWORK_ALERTSERVICEIF_HPP
Exception indicating that a metric such as counter or thread conflicts with already known metrics.
Definition: alertServiceIf.hpp:30
Uniquely describes an alert.
Definition: alertServiceIf.hpp:152
std::string const & GetDescription() const noexcept
Definition: alertServiceIf.hpp:171
std::string const & GetId() const noexcept
Definition: alertServiceIf.hpp:164
Alert Service interface.
Definition: alertServiceIf.hpp:315
virtual ~AlertServiceIf() noexcept=default
Interface to create AlertSource.
Definition: alertServiceIf.hpp:187
virtual ~AlertSourceFactoryIf() noexcept=default
virtual AlertSource MakeAlertSource(AlertDescription const &description)=0
Creates a new alert source for the specified alert condition.
Models a single alert source that can be set or cleared.
Definition: alertServiceIf.hpp:48
void Set(bool state=true)
Set alert status state.
Definition: alertServiceIf.cpp:43
bool IsSet() const noexcept
Query alert status.
Definition: alertServiceIf.hpp:103
AlertSource & operator=(AlertSource &&other) noexcept
Move assigns from other to this object.
Definition: alertServiceIf.cpp:24
std::chrono::system_clock::time_point TimePoint
Timestamp type.
Definition: alertServiceIf.hpp:74
~AlertSource() noexcept
Resets alert.
Definition: alertServiceIf.cpp:33
AlertSource()
Definition: alertServiceIf.cpp:16
boost::signals2::connection Connect(Signal::slot_type const &slot)
Connect slot to signal.
Definition: alertServiceIf.cpp:52
std::pair< bool, TimePoint > GetStatus() const noexcept
Get current status with timestamp of the time the state was last changed.
Definition: alertServiceIf.hpp:112
boost::signals2::signal< void(bool, TimePoint)> Signal
Signal type emitted on rising and falling alert status flanks.
Definition: alertServiceIf.hpp:123
void Reset()
Clear alert.
Definition: alertServiceIf.hpp:83
Interface to observe alert status.
Definition: alertServiceIf.hpp:209
virtual ReducedStatus GetReducedStatus() const =0
Get the reduced status.
boost::signals2::signal< void(ReducedStatus const &, std::vector< AlertStatus > const &)> ReducedStatusSignal
Signal emitted for every change in reduced alert status.
Definition: alertServiceIf.hpp:264
virtual std::vector< AlertStatus > GetAlertStatuses() const =0
Get status of all alert conditions.
virtual ~AlertStatusObserverIf() noexcept=default
virtual boost::signals2::connection ConnectReducedStatus(ReducedStatusSignal::slot_type slot)=0
Connects a slot to the reduced alert signal.
std::chrono::system_clock::time_point TimePoint
Timestamp type used throughout AlertServiceIf.
Definition: alertServiceIf.hpp:225
std::optional< bool > ReducedStatus
Represents current alert status.
Definition: alertServiceIf.hpp:220
The RtctkException class is the base class for all Rtctk exceptions.
Definition: exceptions.hpp:237
RtctkException() noexcept
Definition: exceptions.cpp:113
Provides macros and utilities for exception handling.
Definition: commandReplier.cpp:22
Structure describing an alert condition with status from the corresponding AlertSource.
Definition: alertServiceIf.hpp:230
AlertDescription description
Information describing the alert.
Definition: alertServiceIf.hpp:244
TimePoint since
Time point when status was first set.
Definition: alertServiceIf.hpp:239
bool status
Status of an alert.
Definition: alertServiceIf.hpp:234