26namespace util::supervise {
129 void Name(std::string name) { name_ = std::move(name); }
135 [[nodiscard]]
const std::string &
Name()
const {
return name_; }
146 path_ = std::move(path);
153 [[nodiscard]]
const std::string &
Path()
const {
162 arguments_ = std::move(arguments);
238 [[nodiscard]]
bool ShowWindow()
const {
return show_window_; }
258 void MaxRestarts(uint32_t max_restarts) { max_restarts_ = max_restarts; }
264 [[nodiscard]] uint32_t
MaxRestarts()
const {
return max_restarts_; }
271 void InService(
bool in_service) { in_service_ = in_service; }
277 [[nodiscard]]
bool InService()
const {
return in_service_; }
283 [[nodiscard]] uint32_t
NofRestarts()
const {
return nof_restarts_; }
289 [[nodiscard]]
bool Operable()
const {
return operable_; }
340 void Operable(
bool operable) { operable_ = operable; }
357 std::string arguments_;
359 bool show_window_ =
true;
360 uint32_t startup_delay_ = 0;
361 uint32_t max_restarts_ = 100;
366 std::atomic<uint32_t> nof_restarts_ = 0;
367 std::atomic<bool> in_service_ =
false;
368 std::atomic<bool> operable_ =
false;
375 void StartupAsString(
const std::string &startup);
381 [[nodiscard]] std::string_view StartupAsString()
const;
387 void PriorityAsString(
const std::string &priority);
393 [[nodiscard]] std::string_view PriorityAsString()
const;
Supervise an executable application.
Definition isuperviseapplication.h:116
void Operable(bool operable)
Sets the operable property.
Definition isuperviseapplication.h:340
virtual ~ISuperviseApplication()=default
Default destructor.
void ShowWindow(bool show)
Sets to true if a window should be shown.
Definition isuperviseapplication.h:232
uint32_t StartupDelay() const
Returns the startup delay in seconds.
Definition isuperviseapplication.h:252
void ResetNofRestarts()
Reset number of restarts..
Definition isuperviseapplication.h:334
uint32_t NofRestarts() const
Returns number of restarts.
Definition isuperviseapplication.h:283
const std::string & Arguments() const
Command line arguments.
Definition isuperviseapplication.h:169
void MaxRestarts(uint32_t max_restarts)
Sets maximum number of restarts.
Definition isuperviseapplication.h:258
void ReadConfig(const xml::IXmlNode &application_node)
Reads in the configuration.
void InService(bool in_service)
Starts or stops the executable.
Definition isuperviseapplication.h:271
void StartupDelay(uint32_t delay)
Initial startup delay in seconds.
Definition isuperviseapplication.h:246
virtual void Start()
Initialize and start the supervisor.
void Name(std::string name)
Name of the application.
Definition isuperviseapplication.h:129
ApplicationStartup Startup() const
Startup mode for the application.
Definition isuperviseapplication.h:206
void State(ApplicationState state)
Sets the supervisor state.
Definition isuperviseapplication.h:346
void IncrementNofRestarts()
Increment number of restarts.
Definition isuperviseapplication.h:329
const std::string & Name() const
Name of the application.
Definition isuperviseapplication.h:135
void Startup(ApplicationStartup startup)
Startup mode for the application.
Definition isuperviseapplication.h:200
std::vector< std::string > ParseCommandLine() const
Convert the command line into an array of arguments.
void Path(std::string path)
Path to the executable.
Definition isuperviseapplication.h:145
bool Operable() const
Returns true if the executable is running.
Definition isuperviseapplication.h:289
ApplicationPriority Priority() const
Returns the executable priority.
Definition isuperviseapplication.h:219
virtual void Stop()
Stops the supervisor.
void Priority(ApplicationPriority priority)
Defines the priority for the executable.
Definition isuperviseapplication.h:213
bool InService() const
Returns true if the executable should be started.
Definition isuperviseapplication.h:277
uint32_t MaxRestarts() const
Maximum number of restarts.
Definition isuperviseapplication.h:264
const std::string & Path() const
Path to the executable.
Definition isuperviseapplication.h:153
ApplicationState State() const
Returns the state of the supervisor.
Definition isuperviseapplication.h:295
bool ShowWindow() const
True if window should be shown.
Definition isuperviseapplication.h:238
virtual void Poll()
Poll the supervisor.
void SaveConfig(xml::IXmlNode &root_node) const
Saves the application configuration.
void Arguments(std::string arguments)
Command line arguments to use at startup.
Definition isuperviseapplication.h:161
Interface class against a XML tag (node) in a XML file.
Definition ixmlnode.h:61
ApplicationStartup
Defines the type of startup for tha tas.
Definition isuperviseapplication.h:64
@ Automatic
Starts and restarts if stopped.
Definition isuperviseapplication.h:67
@ Once
Starts only one time.
Definition isuperviseapplication.h:66
@ Manual
Manual start and stop of the application.
Definition isuperviseapplication.h:65
ApplicationState
The supervisor state.
Definition isuperviseapplication.h:31
@ Failing
Application is failing (not running).
Definition isuperviseapplication.h:34
@ Running
Application is running.
Definition isuperviseapplication.h:33
@ Stopped
Application is (manually) stopped.
Definition isuperviseapplication.h:32
@ Ready
Application is ready (not running).
Definition isuperviseapplication.h:35
ApplicationPriority
Defines the priority uses when it is running.
Definition isuperviseapplication.h:79
@ High
High priority.
Definition isuperviseapplication.h:81
@ AboveNormal
Above normal. Questionable usage.
Definition isuperviseapplication.h:82
@ Normal
Typical GUI applications uses this priority.
Definition isuperviseapplication.h:83
@ Realtime
Realtime task. Avoid to use this priority.
Definition isuperviseapplication.h:80
@ BelowNormal
Below normal. Questionable usage.
Definition isuperviseapplication.h:84
@ Idle
Typical for most background task. Recommended usage.
Definition isuperviseapplication.h:85
The xml namespace is used for XML related classes and functions.
Definition isuperviseapplication.h:22