Files
Custom-Operating-System/userland/servers/launch_server/LaunchWatchdog.h

37 lines
760 B
C
Raw Normal View History

2025-02-12 09:54:05 -05:00
#pragma once
#include "Exec.h"
#include <iostream>
#include <libfoundation/EventReceiver.h>
#include <vector>
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<Exec> m_execs;
};
}