#pragma once #include #include #include #include "../../helpers/memory/SharedPtr.hpp" class CEventLoopTimer { public: CEventLoopTimer(std::optional timeout, std::function self, void* data)> cb_, void* data_); // if not specified, disarms. // if specified, arms. void updateTimeout(std::optional timeout); void cancel(); bool passed(); float leftUs(); bool cancelled(); // resets expires void call(SP self); private: std::function self, void* data)> cb; void* data = nullptr; std::optional expires; bool wasCancelled = false; };