BastionGuard/thirdparty/bastionguard-secure-connection/daemon/include/bsc/task/TaskRunner.hpp
specialworld83 f0f913a209 Release 2.0
2026-07-15 10:52:22 +02:00

35 lines
821 B
C++

#pragma once
#include <atomic>
#include <chrono>
#include <functional>
#include <memory>
#include <thread>
#include <mutex>
#include <string>
#include <unordered_map>
namespace bsc::task {
class TaskRunner {
public:
~TaskRunner();
void every(const std::string& name, std::chrono::milliseconds interval, std::function<void()> fn);
bool stop_task(const std::string& name);
bool has_task(const std::string& name) const;
void stop();
private:
struct TaskState {
std::atomic_bool running{true};
std::chrono::milliseconds interval{1000};
std::function<void()> fn;
std::thread thread;
};
mutable std::mutex mutex_;
std::unordered_map<std::string, std::unique_ptr<TaskState>> tasks_;
std::atomic_bool shutdown_{false};
};
} // namespace bsc::task