UTILLib 2.0
Common C++ library with utilities.
Loading...
Searching...
No Matches
isupervisemaster.h
Go to the documentation of this file.
1/*
2 * Copyright 2025 Ingemar Hedvall
3 * SPDX-License-Identifier: MIT
4 */
5
13#pragma once
14
15#include <memory>
16#include <string>
17#include <algorithm>
18#include <vector>
19
21
22namespace util::supervise {
23
33 SuperviseMasterType = 0,
34 ProcessMasterType = 1,
35};
36
51 public:
55 ISuperviseMaster() = default;
56
61
70 void ProgramName(std::string name) { program_name_ = std::move(name); }
71
76 [[nodiscard]] const std::string &ProgramName() const { return program_name_; }
77
87 void ConfigFile(std::string config_file);
88
93 [[nodiscard]] const std::string &ConfigFile() const { return config_file_; }
94
99 void EnableMqtt(bool enable) { enable_mqtt_ = enable; }
100
105 [[nodiscard]] bool EnableMqtt() const { return enable_mqtt_; }
106
110 virtual void Start();
111
115 virtual void Stop();
116
122
127 std::vector<std::unique_ptr<ISuperviseApplication>> &Applications() {
128 return applications_;
129 }
130
135 const std::vector<std::unique_ptr<ISuperviseApplication>> &Applications() const {
136 return applications_;
137 }
138
143
148
149 protected:
153 std::vector<std::unique_ptr<ISuperviseApplication>> applications_;
154 private:
155 bool enable_mqtt_ = false;
156 std::string program_name_ = "supervise";
157 std::string config_file_ = "supervise.xml";
158
159 void FindConfigFile();
160
161};
162
163} // util::supervise
164
165
Supervise an executable application.
Definition isuperviseapplication.h:116
std::vector< std::unique_ptr< ISuperviseApplication > > applications_
List of supervise applications.
Definition isupervisemaster.h:153
const std::string & ProgramName() const
Program or system name.
Definition isupervisemaster.h:76
virtual void Stop()
Stop the system.
const std::string & ConfigFile() const
Returns the configuration file name.
Definition isupervisemaster.h:93
std::vector< std::unique_ptr< ISuperviseApplication > > & Applications()
Returns a list af supervise applications.
Definition isupervisemaster.h:127
void EnableMqtt(bool enable)
Enable a MQTT client.
Definition isupervisemaster.h:99
virtual ~ISuperviseMaster()
Default destructor.
void ReadConfig()
Read in the configuration.
bool EnableMqtt() const
Returns true if a MQTT client is enabled.
Definition isupervisemaster.h:105
ISuperviseMaster()=default
Default constructor.
const std::vector< std::unique_ptr< ISuperviseApplication > > & Applications() const
Returns a list af supervise applications.
Definition isupervisemaster.h:135
void SaveConfig()
Save the configuration.
virtual ISuperviseApplication * CreateApplication()
Create a supervise application.
virtual void Start()
Start the system.
void ProgramName(std::string name)
Defines the program/system name.
Definition isupervisemaster.h:70
void ConfigFile(std::string config_file)
Configuration file name.
Interface against a task that supervise that an executable is running.
TypeOfSuperviseMaster
Type of master software.
Definition isupervisemaster.h:32