45 explicit ProcessManager(std::shared_ptr<Configuration> conf =
nullptr);
49 void setNodeName(
const std::string& name);
50 std::string getNodeName()
const;
52 void setHealthCheckInterval(
size_t msec);
53 void setRestartWindow(
size_t msec);
54 void setStopTimeout(
size_t msec);
55 void setCommonArgs(
const std::vector<std::string>& args);
56 void setPassthroughArgs(
const std::string& args);
57 void setForwardArgs(
const std::vector<std::string>& args);
68 bool restartProcess(
const std::string& name);
69 bool stopProcess(
const std::string& name);
70 bool startProcess(
const std::string& name);
73 void startMonitoring();
74 void stopMonitoring();
75 bool isMonitoring()
const;
78 ProcessState getProcessState(
const std::string& name)
const;
79 ProcessInfo getProcessInfo(
const std::string& name)
const;
80 std::vector<ProcessInfo> getAllProcesses()
const;
81 std::vector<ProcessGroup> getAllGroups()
const;
83 bool allRunning()
const;
84 bool anyCriticalFailed()
const;
87 std::vector<std::string>
getFullArgs(
const std::string& name)
const;
97 using ProcessCallback = std::function<void(
const ProcessInfo&)>;
98 void setOnProcessStarted(ProcessCallback cb);
99 void setOnProcessStopped(ProcessCallback cb);
100 void setOnProcessFailed(ProcessCallback cb);
103 std::shared_ptr<DebugStream> log();
106 bool startProcessWithUnlock(
ProcessInfo& proc, std::unique_lock<std::mutex>& lock);
107 bool startOneshotWithUnlock(
ProcessInfo& proc, std::unique_lock<std::mutex>& lock);
109 void handleProcessExitByName(
const std::string& name,
int exitCode);
113 std::vector<std::string> prepareProcessArgs(
const ProcessInfo& proc);
116 std::vector<std::string> resolveStartOrder();
117 void expandEnvironment(std::vector<std::string>& args);
118 std::string expandEnvVar(
const std::string& s);
120 std::shared_ptr<Configuration> conf_;
121 std::unique_ptr<HealthChecker> healthChecker_;
124 std::string nodeName_;
125 std::map<std::string, ProcessInfo> processes_;
126 std::map<std::string, ProcessGroup> groups_;
128 std::thread monitorThread_;
129 std::atomic<bool> running_{
false};
130 std::atomic<bool> stopping_{
false};
131 mutable std::mutex mutex_;
133 size_t healthCheckInterval_msec_ = 5000;
134 size_t restartWindow_msec_ = 60000;
135 size_t stopTimeout_msec_ = 5000;
136 std::vector<std::string> commonArgs_;
137 std::string passthroughArgs_;
138 std::vector<std::string> forwardArgs_;
140 ProcessCallback onStarted_;
141 ProcessCallback onStopped_;
142 ProcessCallback onFailed_;
144 std::shared_ptr<DebugStream> mylog;
std::vector< std::string > getFullArgs(const std::string &name) const
Get full arguments list for a process (commonArgs + args + forwardArgs).
Определения ProcessManager.cc:1573