2024-02-20 00:59:35 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <chrono>
|
|
|
|
|
#include <functional>
|
|
|
|
|
|
|
|
|
|
class CTimer {
|
|
|
|
|
public:
|
2024-03-11 00:38:01 +03:00
|
|
|
CTimer(std::chrono::system_clock::duration timeout, std::function<void(std::shared_ptr<CTimer> self, void* data)> cb_, void* data_, bool force);
|
2024-02-20 00:59:35 +00:00
|
|
|
|
|
|
|
|
void cancel();
|
|
|
|
|
bool passed();
|
2024-03-11 00:38:01 +03:00
|
|
|
bool canForceUpdate();
|
2024-02-20 00:59:35 +00:00
|
|
|
|
|
|
|
|
float leftMs();
|
|
|
|
|
|
|
|
|
|
bool cancelled();
|
|
|
|
|
void call(std::shared_ptr<CTimer> self);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::function<void(std::shared_ptr<CTimer> self, void* data)> cb;
|
|
|
|
|
void* data = nullptr;
|
|
|
|
|
std::chrono::system_clock::time_point expires;
|
2024-03-11 00:38:01 +03:00
|
|
|
bool wasCancelled = false;
|
|
|
|
|
bool allowForceUpdate = false;
|
|
|
|
|
};
|