lintel 0.2.0
Loading...
Searching...
No Matches
Process.h
Go to the documentation of this file.
1#ifndef LINTEL_PROCESS_H
2#define LINTEL_PROCESS_H
3
4#include <chrono>
5#include <filesystem>
6#include <functional>
7#include <memory>
8#include <optional>
9#include <string>
10#include <vector>
11
13
14namespace lintel {
21{
22private:
23 // UUID
24 std::string m_id = UUID::generate();
25 // process
26 std::filesystem::path m_path;
27 std::vector<std::string> m_args;
28 // configuration
29 std::string m_configName;
30 bool m_autoRestart = false;
31 int32_t m_restarts = 0;
32 int m_maxAutoRestarts = -1;
33 // automation policy
34 std::chrono::milliseconds m_restartDelay = std::chrono::milliseconds(0);
35 std::chrono::milliseconds m_restartDelayMax = std::chrono::milliseconds(0);
36 std::chrono::milliseconds m_minUptime = std::chrono::milliseconds(0);
37 int m_maxRestartRate = -1;
38 std::chrono::milliseconds m_restartWindow = std::chrono::milliseconds(0);
39 std::chrono::milliseconds m_restartInterval = std::chrono::milliseconds(0);
40 std::optional<int32_t> m_activeFromHour;
41 std::optional<int32_t> m_activeToHour;
42 std::optional<double> m_cpuNotify;
43 std::optional<uint64_t> m_memoryNotify;
44 // events
45 std::shared_ptr<std::function<void(const Process &)>> m_onStart = nullptr;
46 std::shared_ptr<std::function<void(const Process &)>> m_onStop = nullptr;
47 std::shared_ptr<std::function<void(const Process &)>> m_onRestart = nullptr;
48 std::shared_ptr<std::function<void(const Process &)>> m_onTerminate = nullptr;
49 std::shared_ptr<std::function<void(const Process &)>> m_onFinish = nullptr;
50
51public:
58 explicit Process(std::filesystem::path path, std::vector<std::string> args, std::string configName = "");
59
61 void addOnStartEvent(std::shared_ptr<std::function<void(const Process &)>> onStart);
62
64 void addOnStopEvent(std::shared_ptr<std::function<void(const Process &)>> onStop);
65
67 void addOnRestartEvent(std::shared_ptr<std::function<void(const Process &)>> onRestart);
68
70 void addOnTerminateEvent(std::shared_ptr<std::function<void(const Process &)>> onTerminate);
71
73 void addOnFinishEvent(std::shared_ptr<std::function<void(const Process &)>> onFinish);
74
80
83
86
89
91 [[nodiscard]] int currentRestarts() const;
92
94 [[nodiscard]] const std::string &getId() const;
95
97 [[nodiscard]] const std::filesystem::path &getPath() const;
98
100 [[nodiscard]] bool isAutoRestart() const;
101
104
106 [[nodiscard]] const std::vector<std::string> &getArgs() const;
107
109 [[nodiscard]] const std::string &getConfigName() const;
110
111 // --- automation policy ---
112
114 void setRestartDelay(std::chrono::milliseconds delay);
115
117 [[nodiscard]] std::chrono::milliseconds getRestartDelay() const;
118
120 void setRestartDelayMax(std::chrono::milliseconds delayMax);
121
123 [[nodiscard]] std::chrono::milliseconds getRestartDelayMax() const;
124
126 void setMinUptime(std::chrono::milliseconds minUptime);
127
129 [[nodiscard]] std::chrono::milliseconds getMinUptime() const;
130
133
136
138 void setRestartWindow(std::chrono::milliseconds restartWindow);
139
141 [[nodiscard]] std::chrono::milliseconds getRestartWindow() const;
142
144 void setRestartInterval(std::chrono::milliseconds restartInterval);
145
147 [[nodiscard]] std::chrono::milliseconds getRestartInterval() const;
148
150 void setActiveFromHour(std::optional<int32_t> activeFromHour);
151
153 [[nodiscard]] std::optional<int32_t> getActiveFromHour() const;
154
156 void setActiveToHour(std::optional<int32_t> activeToHour);
157
159 [[nodiscard]] std::optional<int32_t> getActiveToHour() const;
160
162 [[nodiscard]] bool hasActiveWindow() const;
163
165 [[nodiscard]] bool inActiveWindow() const;
166
168 void setCpuNotify(std::optional<double> cpuNotify);
169
171 [[nodiscard]] std::optional<double> getCpuNotify() const;
172
174 void setMemoryNotify(std::optional<uint64_t> memoryNotify);
175
177 [[nodiscard]] std::optional<uint64_t> getMemoryNotify() const;
178
180 void onStart() const;
181
183 void onStop() const;
184
186 void onRestart() const;
187
189 void onTerminate() const;
190
192 void onFinish() const;
193};
194
195}// namespace lintel
196#endif// LINTEL_PROCESS_H
Definition Process.h:21
Process(std::filesystem::path path, std::vector< std::string > args, std::string configName="")
bool hasActiveWindow() const
void addOnRestartEvent(std::shared_ptr< std::function< void(const Process &)> > onRestart)
int getMaxRestartRate() const
const std::string & getConfigName() const
std::optional< int32_t > getActiveFromHour() const
const std::string & getId() const
void setActiveToHour(std::optional< int32_t > activeToHour)
void setRestartDelay(std::chrono::milliseconds delay)
void addOnTerminateEvent(std::shared_ptr< std::function< void(const Process &)> > onTerminate)
int getMaxAutoRestarts() const
std::chrono::milliseconds getRestartInterval() const
void setRestartInterval(std::chrono::milliseconds restartInterval)
void setMaxRestartRate(int maxRestartRate)
std::optional< int32_t > getActiveToHour() const
void disableAutoStart()
int currentRestarts() const
void addOnFinishEvent(std::shared_ptr< std::function< void(const Process &)> > onFinish)
void setRestartWindow(std::chrono::milliseconds restartWindow)
const std::filesystem::path & getPath() const
void setMinUptime(std::chrono::milliseconds minUptime)
void resetRestarts()
void addOnStartEvent(std::shared_ptr< std::function< void(const Process &)> > onStart)
void setActiveFromHour(std::optional< int32_t > activeFromHour)
void addOnStopEvent(std::shared_ptr< std::function< void(const Process &)> > onStop)
bool inActiveWindow() const
void onStop() const
void setMemoryNotify(std::optional< uint64_t > memoryNotify)
std::chrono::milliseconds getRestartDelay() const
void onRestart() const
void onStart() const
std::optional< double > getCpuNotify() const
std::chrono::milliseconds getMinUptime() const
void increaseRestarts()
std::chrono::milliseconds getRestartDelayMax() const
void setRestartDelayMax(std::chrono::milliseconds delayMax)
void setCpuNotify(std::optional< double > cpuNotify)
std::chrono::milliseconds getRestartWindow() const
void enableAutoStart(int maxAutoRestarts=-1)
const std::vector< std::string > & getArgs() const
void onTerminate() const
std::optional< uint64_t > getMemoryNotify() const
void onFinish() const
bool isAutoRestart() const
static std::string generate()
Definition BaseFeature.h:6
constexpr std::string_view type_name()
Definition TypeName.h:9