iw5-mod/src/module/scheduler.hpp

28 lines
761 B
C++
Raw Normal View History

2018-12-27 17:11:52 +01:00
#pragma once
2019-01-20 22:26:18 +01:00
#include "utils/concurrent_list.hpp"
2018-12-27 17:11:52 +01:00
class scheduler final : public module
{
public:
static void on_frame(const std::function<void()>& callback);
2018-12-28 12:50:34 +01:00
static void once(const std::function<void()>& callback);
2018-12-27 17:11:52 +01:00
2019-01-16 16:19:21 +01:00
static void error(const std::string& message, int level);
2019-01-27 02:52:33 +01:00
void post_load() override;
2018-12-27 17:11:52 +01:00
void pre_destroy() override;
private:
static std::mutex mutex_;
2019-01-16 16:19:21 +01:00
static std::queue<std::pair<std::string, int>> errors_;
2019-01-20 22:26:18 +01:00
static utils::concurrent_list<std::function<void()>> callbacks_;
static utils::concurrent_list<std::function<void()>> single_callbacks_;
2019-01-16 16:19:21 +01:00
2019-01-27 02:52:33 +01:00
static void frame_stub();
static void execute();
2019-01-16 16:19:21 +01:00
static void execute_safe();
static void execute_error();
static bool get_next_error(const char** error_message, int* error_level);
2018-12-27 17:11:52 +01:00
};