#pragma once #include "Exec.h" #include #include #include namespace LaunchServer { class LaunchWatchdog : public LFoundation::EventReceiver { public: inline static LaunchWatchdog& the() { extern LaunchWatchdog* s_LaunchServer_LaunchWatchdog_the; return *s_LaunchServer_LaunchWatchdog_the; } LaunchWatchdog(); ~LaunchWatchdog() = default; void tick() { for (auto& exec : m_execs) { if (!exec.is_alive()) { exec.launch(); } } } void add(const Exec& exec) { m_execs.push_back(exec); } void add(Exec&& exec) { m_execs.push_back(std::move(exec)); } private: std::vector m_execs; }; }