RTC Toolkit 6.0.0-pre2
Loading...
Searching...
No Matches
rtcSupervisor.hpp
Go to the documentation of this file.
1
12
13#ifndef RTCTK_RTCSUPERVISOR_RTCSUPERVISOR_HPP
14#define RTCTK_RTCSUPERVISOR_RTCSUPERVISOR_HPP
15
26
33
34#include <map>
35#include <mutex>
36#include <string>
37
38namespace rtctk::rtcSupervisor {
39
40using namespace rtctk::componentFramework;
41
43
44class RtcSupervisor : public Super::BizLogicIf {
45public:
47
48 RtcSupervisor(const std::string& comp_name, ServiceContainer& services);
49 virtual ~RtcSupervisor();
50
51 void ActivityStarting(StopToken st) override;
52 void ActivityInitialising(StopToken st) override;
53 void ActivityEnabling(StopToken st) override;
54 void ActivityDisabling(StopToken st) override;
55
56 void ActivityUpdating(StopToken st, const JsonPayload& args) override;
57 bool GuardUpdatingAllowed(const JsonPayload& args) override;
58
59 void ActionClearAlerts() override;
60
61 void ActivityRecovering(StopToken st) override;
62
63 std::string ActionGetStatus() override;
64
68 void ActionSetDeferredModes(const JsonPayload& args) override;
69 void ActivitySettingModes(StopToken st, const JsonPayload& args) override;
70 bool GuardSettingModesAllowed(const JsonPayload& args) override;
71
72 void ActivityWritingBack(StopToken st, const JsonPayload& args) override;
73 bool GuardWritingBackAllowed(const JsonPayload& args) override;
74
75protected:
79 virtual std::unique_ptr<StatusEstimator> MakeStatusEstimator();
80
84 std::vector<std::unique_ptr<RtcObjectIf>> MakeRtcObjects();
85
89 std::vector<elt::mal::Uri> GetPubSubUris();
90
96 void MonitorCycle() noexcept;
97
103 void OnStateEventReceived(const taiclock::TaiClock::time_point,
104 const std::string& name,
105 const std::string& state) noexcept;
106
110 void SetStatus(const std::string& status);
111
115 std::string GetStatus();
116
120 void LoadStaticConfig();
121
125 void LoadDynamicConfig();
126
127 log4cplus::Logger& m_logger;
128
129 // component identity
130 const std::string m_name;
131
132 // access to services
139
142
143 // alert is set if periodic pinging of components fails
145
146 // alert is set if commanding the supervisor fails
148
149 // alert is set if OLDB cannot be accessed
151
152 // Object Config constructed from list of deployed objects.
153 std::vector<std::unique_ptr<RtcObjectIf>> m_objects;
155
156 // DataPointPaths for confiugration datapoints
161
162 // DataPointPaths for monitoring datapoints
164
165 // Local state variables
170
171 // mutex to control access on m_status, m_error and m_who_in_error from different threads
173
174 // currently evaluated global status
175 std::string m_status;
176
177 // stores deferred modes that may be set via command before initialising
178 std::map<std::string, std::string> m_deferred_modes;
179
180 // these access class variables, therefore they must be destroyed first, otherwise coredump!!
181
182 // used for system status estimation
184
185 // used for periodic component monitoring
187
188 // used to get state-changed notifications from all components
190
191 // used for system alert aggregation
193};
194
195} // namespace rtctk::rtcSupervisor
196
197#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:164
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:77
Base interface for all OLDB adapters.
Definition oldbIf.hpp:25
Base interface for all Persistent Configuration Repository adapters.
Definition persistentRepoIf.hpp:25
A utility class used to populate the Runtime Configuration Repository.
Definition populateConfig.hpp:46
Base interface for all Runtime Configuration Repository adapters.
Definition runtimeRepoIf.hpp:27
Container class that holds services of any type.
Definition serviceContainer.hpp:39
Class that implements a very basic service discovery mechanism.
Definition serviceDiscovery.hpp:33
Class used to subscribe to state-changed-topic using MAL.
Definition stateSubscriber.hpp:41
Class for system status estimation.
Definition alertAggregator.hpp:28
Definition rtcMonitor.hpp:27
Class used to control multiple RtcObjects.
Definition rtcObjectController.hpp:45
Interface class for RtcObject.
Definition rtcObject.hpp:75
void LoadStaticConfig()
Retrievs static configuration from the Runtime Configuration Repository.
Definition rtcSupervisor.cpp:568
void ActivityEnabling(StopToken st) override
Definition rtcSupervisor.cpp:249
AlertSource m_command_alert
Definition rtcSupervisor.hpp:147
void ActivitySettingModes(StopToken st, const JsonPayload &args) override
Definition rtcSupervisor.cpp:409
JsonPayload ActionGetDeferredModes() override
Definition rtcSupervisor.cpp:397
void ActivityDisabling(StopToken st) override
Definition rtcSupervisor.cpp:267
bool GuardUpdatingAllowed(const JsonPayload &args) override
Definition rtcSupervisor.cpp:322
PersistentRepoIf & m_psr
Definition rtcSupervisor.hpp:133
std::mutex m_status_mutex
Definition rtcSupervisor.hpp:172
DataPointPath m_dp_path_init_alone
Definition rtcSupervisor.hpp:157
AlertSource m_oldb_alert
Definition rtcSupervisor.hpp:150
void ActivityWritingBack(StopToken st, const JsonPayload &args) override
Definition rtcSupervisor.cpp:443
void ActionClearAlerts() override
Definition rtcSupervisor.cpp:330
RuntimeRepoIf & m_rtr
Definition rtcSupervisor.hpp:134
DataPointPath m_dp_path_enable_alone
Definition rtcSupervisor.hpp:158
StatusPublisher m_status_publisher
Definition rtcSupervisor.hpp:140
void ActionSetDeferredModes(const JsonPayload &args) override
Definition rtcSupervisor.cpp:401
bool m_update_alone
Definition rtcSupervisor.hpp:169
std::vector< std::unique_ptr< RtcObjectIf > > MakeRtcObjects()
Constructs RtcObjects, called during Initialisation.
Definition rtcSupervisor.cpp:462
DataPointPath m_dp_path_disable_alone
Definition rtcSupervisor.hpp:159
bool m_init_alone
Definition rtcSupervisor.hpp:166
void SetStatus(const std::string &status)
Sets and publishes overall system status.
Definition rtcSupervisor.cpp:537
bool m_enable_alone
Definition rtcSupervisor.hpp:167
const std::string m_name
Definition rtcSupervisor.hpp:130
std::vector< std::unique_ptr< RtcObjectIf > > m_objects
Definition rtcSupervisor.hpp:153
log4cplus::Logger & m_logger
Definition rtcSupervisor.hpp:127
JsonPayload ActionGetAvailableModes() override
Definition rtcSupervisor.cpp:384
std::string m_status
Definition rtcSupervisor.hpp:175
void ActivityInitialising(StopToken st) override
Definition rtcSupervisor.cpp:120
std::string GetStatus()
Returns the overall system status.
Definition rtcSupervisor.cpp:559
void MonitorCycle() noexcept
Performs one cycle of async monitoring of the components.
Definition rtcSupervisor.cpp:509
virtual std::unique_ptr< StatusEstimator > MakeStatusEstimator()
Factory method for creating custom status estimator objects.
Definition rtcSupervisor.cpp:458
std::unique_ptr< RtcObjectController > m_object_controller
Definition rtcSupervisor.hpp:154
void ActivityStarting(StopToken st) override
Definition rtcSupervisor.cpp:88
void ActivityRecovering(StopToken st) override
Definition rtcSupervisor.cpp:351
bool m_disable_alone
Definition rtcSupervisor.hpp:168
JsonPayload ActionGetActiveModes() override
Definition rtcSupervisor.cpp:393
OldbIf & m_oldb
Definition rtcSupervisor.hpp:135
std::unique_ptr< AlertAggregator > m_alert_aggregator
Definition rtcSupervisor.hpp:192
std::string ActionGetStatus() override
Definition rtcSupervisor.cpp:289
DataPointPath m_dp_path_update_alone
Definition rtcSupervisor.hpp:160
AlertSource m_heartbeat_alert
Definition rtcSupervisor.hpp:144
std::unique_ptr< RtcMonitor > m_monitor_thread
Definition rtcSupervisor.hpp:186
AlertServiceIf & m_alerts
Definition rtcSupervisor.hpp:137
RtcSupervisor(const std::string &comp_name, ServiceContainer &services)
Definition rtcSupervisor.cpp:36
ServiceDiscovery & m_service_discovery
Definition rtcSupervisor.hpp:138
ComponentMetricsIf & m_metrics
Definition rtcSupervisor.hpp:136
Super ComponentType
Definition rtcSupervisor.hpp:46
bool GuardWritingBackAllowed(const JsonPayload &args) override
Definition rtcSupervisor.cpp:448
PopulateConfig m_popcfg
Definition rtcSupervisor.hpp:141
void OnStateEventReceived(const taiclock::TaiClock::time_point, const std::string &name, const std::string &state) noexcept
Called on State Event subscription.
Definition rtcSupervisor.cpp:524
std::unique_ptr< StatusEstimator > m_status_estimator
Definition rtcSupervisor.hpp:183
std::vector< elt::mal::Uri > GetPubSubUris()
Gets Pub/Sub URIs of superivsord compoonents.
Definition rtcSupervisor.cpp:494
std::unique_ptr< StateSubscriber > m_state_subscriber
Definition rtcSupervisor.hpp:189
std::map< std::string, std::string > m_deferred_modes
Definition rtcSupervisor.hpp:178
virtual ~RtcSupervisor()
Definition rtcSupervisor.cpp:76
DataPointPath m_dp_path_status
Definition rtcSupervisor.hpp:163
void ActivityUpdating(StopToken st, const JsonPayload &args) override
Definition rtcSupervisor.cpp:297
bool GuardSettingModesAllowed(const JsonPayload &args) override
Definition rtcSupervisor.cpp:433
void LoadDynamicConfig()
Retrievs static configuration from the Runtime Configuration Repository.
Definition rtcSupervisor.cpp:577
Class for system status estimation.
Definition statusEstimator.hpp:63
Class used to publish status-changed-topic using MAL.
Definition statusPublisher.hpp:36
Header file for ComponentMetricsIf.
rad::StopToken StopToken
Definition stopToken.hpp:20
nlohmann::json JsonPayload
Type requirements:
Definition jsonPayload.hpp:25
Definition alertAggregator.cpp:19
Supervisory< RtcComponent > Super
Definition rtcSupervisor.hpp:42
Definition ddsSub.hpp:156
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:213
Lifecycle Extension that makes an RTC Component 'Supervisory'.