void AddCallback(const Callback &callback, std::chrono::nanoseconds delay)
std::priority_queue< std::pair< TimePoint, Callback >, std::vector< std::pair< TimePoint, Callback > >, llvm::on_first< std::greater< TimePoint > > > m_callbacks
std::optional< TimePoint > GetNextWakeupTime()
std::function< void(MainLoopBase &)> Callback
std::mutex m_callback_mutex
virtual void Interrupt()=0
std::chrono::time_point< std::chrono::steady_clock, std::chrono::nanoseconds > TimePoint