#pragma once #include #include class CTimer { public: CTimer(std::chrono::system_clock::duration timeout, std::function self, void* data)> cb_, void* data_); void cancel(); bool passed(); float leftMs(); bool cancelled(); void call(std::shared_ptr self); private: std::function self, void* data)> cb; void* data = nullptr; std::chrono::system_clock::time_point expires; bool wasCancelled = false; };