RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
rtcSupervisor.hpp
Go to the documentation of this file.
1
11
12#ifndef RTCTK_RTCSUPERVISOR_RTCSUPERVISOR_HPP
13#define RTCTK_RTCSUPERVISOR_RTCSUPERVISOR_HPP
14
25
32
33#include <map>
34#include <mutex>
35#include <string>
36
37namespace rtctk::rtcSupervisor {
38
39using namespace rtctk::componentFramework;
40
42
43class RtcSupervisor : public Super::BizLogicIf {
44public:
46
47 RtcSupervisor(const std::string& comp_name, ServiceContainer& services);
48 virtual ~RtcSupervisor();
49
50 void ActivityStarting(StopToken st) override;
51 void ActivityInitialising(StopToken st) override;
52 void ActivityEnabling(StopToken st) override;
53 void ActivityDisabling(StopToken st) override;
54
55 void ActivityUpdating(StopToken st, const JsonPayload& args) override;
56 bool GuardUpdatingAllowed(const JsonPayload& args) override;
57
58 void ActionClearAlerts() override;
59
60 void ActivityRecovering(StopToken st) override;
61
62 std::string ActionGetStatus() override;
63
67 void ActionSetDeferredModes(const JsonPayload& args) override;
68 void ActivitySettingModes(StopToken st, const JsonPayload& args) override;
69 bool GuardSettingModesAllowed(const JsonPayload& args) override;
70
71 void ActivityWritingBack(StopToken st, const JsonPayload& args) override;
72 bool GuardWritingBackAllowed(const JsonPayload& args) override;
73
74protected:
78 virtual std::unique_ptr<StatusEstimator> MakeStatusEstimator();
79
83 std::vector<std::unique_ptr<RtcObjectIf>> MakeRtcObjects();
84
88 std::vector<elt::mal::Uri> GetPubSubUris();
89
95 void MonitorCycle() noexcept;
96
102 void OnStateEventReceived(const taiclock::TaiClock::time_point,
103 const std::string& name,
104 const std::string& state) noexcept;
105
109 void SetStatus(const std::string& status);
110
114 std::string GetStatus();
115
119 void LoadStaticConfig();
120
124 void LoadDynamicConfig();
125
126 log4cplus::Logger& m_logger;
127
128 // component identity
129 const std::string m_name;
130
131 // access to services
138
141
142 // alert is set if periodic pinging of components fails
144
145 // alert is set if commanding the supervisor fails
147
148 // alert is set if OLDB cannot be accessed
150
151 // Object Config constructed from list of deployed objects.
152 std::vector<std::unique_ptr<RtcObjectIf>> m_objects;
154
155 // DataPointPaths for confiugration datapoints
160
161 // DataPointPaths for monitoring datapoints
163
164 // Local state variables
169
170 // mutex to control access on m_status, m_error and m_who_in_error from different threads
172
173 // currently evaluated global status
174 std::string m_status;
175
176 // stores deferred modes that may be set via command before initialising
177 std::map<std::string, std::string> m_deferred_modes;
178
179 // these access class variables, therefore they must be destroyed first, otherwise coredump!!
180
181 // used for system status estimation
183
184 // used for periodic component monitoring
186
187 // used to get state-changed notifications from all components
189
190 // used for system alert aggregation
192};
193
194} // namespace rtctk::rtcSupervisor
195
196#endif // RTCTK_RTCSUPERVISOR_RTCSUPERVISOR_HPP
System alert aggregation.
Declares AlertService.
Alert Service interface.
Definition alertServiceIf.hpp:138
Models a single alert source that can be set or cleared.
Definition alertServiceIf.hpp:47
Component metrics interface.
Definition componentMetricsIf.hpp:163
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:76
Base interface for all OLDB adapters.
Definition oldbIf.hpp:24
Base interface for all Persistent Configuration Repository adapters.
Definition persistentRepoIf.hpp:24
A utility class used to populate the Runtime Configuration Repository.
Definition populateConfig.hpp:45
Base interface for all Runtime Configuration Repository adapters.
Definition runtimeRepoIf.hpp:26
Container class that holds services of any type.
Definition serviceContainer.hpp:38
Class that implements a very basic service discovery mechanism.
Definition serviceDiscovery.hpp:32
Class used to subscribe to state-changed-topic using MAL.
Definition stateSubscriber.hpp:40
Class for system status estimation.
Definition alertAggregator.hpp:27
Definition rtcMonitor.hpp:26
Class used to control multiple RtcObjects.
Definition rtcObjectController.hpp:44
Interface class for RtcObject.
Definition rtcObject.hpp:74
void LoadStaticConfig()
Retrievs static configuration from the Runtime Configuration Repository.
Definition rtcSupervisor.cpp:567
void ActivityEnabling(StopToken st) override
Definition rtcSupervisor.cpp:248
AlertSource m_command_alert
Definition rtcSupervisor.hpp:146
void ActivitySettingModes(StopToken st, const JsonPayload &args) override
Definition rtcSupervisor.cpp:408
JsonPayload ActionGetDeferredModes() override
Definition rtcSupervisor.cpp:396
void ActivityDisabling(StopToken st) override
Definition rtcSupervisor.cpp:266
bool GuardUpdatingAllowed(const JsonPayload &args) override
Definition rtcSupervisor.cpp:321
PersistentRepoIf & m_psr
Definition rtcSupervisor.hpp:132
std::mutex m_status_mutex
Definition rtcSupervisor.hpp:171
DataPointPath m_dp_path_init_alone
Definition rtcSupervisor.hpp:156
AlertSource m_oldb_alert
Definition rtcSupervisor.hpp:149
void ActivityWritingBack(StopToken st, const JsonPayload &args) override
Definition rtcSupervisor.cpp:442
void ActionClearAlerts() override
Definition rtcSupervisor.cpp:329
RuntimeRepoIf & m_rtr
Definition rtcSupervisor.hpp:133
DataPointPath m_dp_path_enable_alone
Definition rtcSupervisor.hpp:157
StatusPublisher m_status_publisher
Definition rtcSupervisor.hpp:139
void ActionSetDeferredModes(const JsonPayload &args) override
Definition rtcSupervisor.cpp:400
bool m_update_alone
Definition rtcSupervisor.hpp:168
std::vector< std::unique_ptr< RtcObjectIf > > MakeRtcObjects()
Constructs RtcObjects, called during Initialisation.
Definition rtcSupervisor.cpp:461
DataPointPath m_dp_path_disable_alone
Definition rtcSupervisor.hpp:158
bool m_init_alone
Definition rtcSupervisor.hpp:165
void SetStatus(const std::string &status)
Sets and publishes overall system status.
Definition rtcSupervisor.cpp:536
bool m_enable_alone
Definition rtcSupervisor.hpp:166
const std::string m_name
Definition rtcSupervisor.hpp:129
std::vector< std::unique_ptr< RtcObjectIf > > m_objects
Definition rtcSupervisor.hpp:152
log4cplus::Logger & m_logger
Definition rtcSupervisor.hpp:126
JsonPayload ActionGetAvailableModes() override
Definition rtcSupervisor.cpp:383
std::string m_status
Definition rtcSupervisor.hpp:174
void ActivityInitialising(StopToken st) override
Definition rtcSupervisor.cpp:119
std::string GetStatus()
Returns the overall system status.
Definition rtcSupervisor.cpp:558
void MonitorCycle() noexcept
Performs one cycle of async monitoring of the components.
Definition rtcSupervisor.cpp:508
virtual std::unique_ptr< StatusEstimator > MakeStatusEstimator()
Factory method for creating custom status estimator objects.
Definition rtcSupervisor.cpp:457
std::unique_ptr< RtcObjectController > m_object_controller
Definition rtcSupervisor.hpp:153
void ActivityStarting(StopToken st) override
Definition rtcSupervisor.cpp:87
void ActivityRecovering(StopToken st) override
Definition rtcSupervisor.cpp:350
bool m_disable_alone
Definition rtcSupervisor.hpp:167
JsonPayload ActionGetActiveModes() override
Definition rtcSupervisor.cpp:392
OldbIf & m_oldb
Definition rtcSupervisor.hpp:134
std::unique_ptr< AlertAggregator > m_alert_aggregator
Definition rtcSupervisor.hpp:191
std::string ActionGetStatus() override
Definition rtcSupervisor.cpp:288
DataPointPath m_dp_path_update_alone
Definition rtcSupervisor.hpp:159
AlertSource m_heartbeat_alert
Definition rtcSupervisor.hpp:143
std::unique_ptr< RtcMonitor > m_monitor_thread
Definition rtcSupervisor.hpp:185
AlertServiceIf & m_alerts
Definition rtcSupervisor.hpp:136
RtcSupervisor(const std::string &comp_name, ServiceContainer &services)
Definition rtcSupervisor.cpp:35
ServiceDiscovery & m_service_discovery
Definition rtcSupervisor.hpp:137
ComponentMetricsIf & m_metrics
Definition rtcSupervisor.hpp:135
Super ComponentType
Definition rtcSupervisor.hpp:45
bool GuardWritingBackAllowed(const JsonPayload &args) override
Definition rtcSupervisor.cpp:447
PopulateConfig m_popcfg
Definition rtcSupervisor.hpp:140
void OnStateEventReceived(const taiclock::TaiClock::time_point, const std::string &name, const std::string &state) noexcept
Called on State Event subscription.
Definition rtcSupervisor.cpp:523
std::unique_ptr< StatusEstimator > m_status_estimator
Definition rtcSupervisor.hpp:182
std::vector< elt::mal::Uri > GetPubSubUris()
Gets Pub/Sub URIs of superivsord compoonents.
Definition rtcSupervisor.cpp:493
std::unique_ptr< StateSubscriber > m_state_subscriber
Definition rtcSupervisor.hpp:188
std::map< std::string, std::string > m_deferred_modes
Definition rtcSupervisor.hpp:177
virtual ~RtcSupervisor()
Definition rtcSupervisor.cpp:75
DataPointPath m_dp_path_status
Definition rtcSupervisor.hpp:162
void ActivityUpdating(StopToken st, const JsonPayload &args) override
Definition rtcSupervisor.cpp:296
bool GuardSettingModesAllowed(const JsonPayload &args) override
Definition rtcSupervisor.cpp:432
void LoadDynamicConfig()
Retrievs static configuration from the Runtime Configuration Repository.
Definition rtcSupervisor.cpp:576
Class for system status estimation.
Definition statusEstimator.hpp:62
Class used to publish status-changed-topic using MAL.
Definition statusPublisher.hpp:35
Header file for ComponentMetricsIf.
rad::StopToken StopToken
Definition stopToken.hpp:19
nlohmann::json JsonPayload
Type requirements:
Definition jsonPayload.hpp:24
Definition alertAggregator.cpp:18
Supervisory< RtcComponent > Super
Definition rtcSupervisor.hpp:41
Definition ddsSub.hpp:155
Header file for OldbIf, which defines the API for OldbAdapters.
Header file for PersistentRepoIf, which defines the API for PersistentRepoAdapter.
Header file for PopulateConfig used for populating the Runtime Configuration Repository.
Holds monitor thread for async ping of supervised objects.
Handles communication with many supervised RtcComponents.
Lifecycle Extension that makes an RTC Component 'Runnable'.
Header file for RuntimeRepoIf, which defines the API for RuntimeRepoAdapters.
A container that can hold any type of service.
Class that implements a very basic service discover mechanism.
Subscribes to stdif state topic via MAL.
System status estimation.
Publishes the stdif status topic via MAL.
Life cycle extension to make RtcComponent Supervisory.
Definition supervisory.hpp:212
Lifecycle Extension that makes an RTC Component 'Supervisory'.