#include #include #include #include "timer.hpp" #include "Invoker.hpp" using namespace std::chrono; using namespace std; Timer::Timer(size_t triggeramount, std::unique_ptr invoker, milliseconds triggerinterval) :triggeramount(triggeramount) , invoker(std::move(invoker)) , triggerinterval(triggerinterval){} void Timer::add_time(milliseconds deltatime) { accumulator += deltatime; if (accumulator >= triggerinterval) { accumulator -= triggerinterval; cout << "request in timer\n"; invoker->request(); triggercount++; if (triggeramount != 0 && triggercount >= triggeramount){ isexpired=true; } } } void TimerManager::add_timer(Timer timer){ timers.push_back(std::move(timer)); } void TimerManager::update_timers() { steady_clock::time_point currenttime = steady_clock::now(); milliseconds deltatime = duration_cast(currenttime-previoustime); for(Timer &mytimer: timers){ mytimer.add_time(deltatime); } previoustime = currenttime; }