12#ifndef RTCTK_COMPONENTFRAMEWORK_ALERTSERVICEIF_HPP
13#define RTCTK_COMPONENTFRAMEWORK_ALERTSERVICEIF_HPP
18#include <boost/signals2/signal.hpp>
74 using TimePoint = std::chrono::system_clock::time_point;
96 void Set(
bool state =
true);
113 return {m_state, m_since};
131 boost::signals2::connection
Connect(Signal::slot_type
const& slot);
159 explicit AlertDescription(std::string
id, std::string description)
noexcept;
164 std::string
const&
GetId() const noexcept {
172 return m_description;
177 std::string m_description;
225 using
TimePoint = std::chrono::system_clock::time_point;
264 boost::signals2::signal<void(
ReducedStatus const&, std::vector<AlertStatus>
const&)>;
274 virtual boost::signals2::connection
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