Skip to content
API Documentation
BastionGuard™
TaskRunner.hpp
Go to the documentation of this file.
1#pragma once
2#include <atomic>
3#include <chrono>
4#include <functional>
5#include <memory>
6#include <thread>
7#include <mutex>
8#include <string>
9#include <unordered_map>
10
11namespace bsc::task {
12
14 public:
16
17 void every(const std::string& name, std::chrono::milliseconds interval, std::function<void()> fn);
18 bool stop_task(const std::string& name);
19 bool has_task(const std::string& name) const;
20 void stop();
21
22 private:
23 struct TaskState {
24 std::atomic_bool running{true};
25 std::chrono::milliseconds interval{1000};
26 std::function<void()> fn;
27 std::thread thread;
28 };
29
30 mutable std::mutex mutex_;
31 std::unordered_map<std::string, std::unique_ptr<TaskState>> tasks_;
32 std::atomic_bool shutdown_{false};
33};
34
35} // namespace bsc::task
bool stop_task(const std::string &name)
bool has_task(const std::string &name) const
std::unordered_map< std::string, std::unique_ptr< TaskState > > tasks_
std::atomic_bool shutdown_
void every(const std::string &name, std::chrono::milliseconds interval, std::function< void()> fn)
Definition TaskRunner.cpp:9
std::function< void()> fn
std::chrono::milliseconds interval