added invoker virtual class and made timer inherit from it

This commit is contained in:
2026-08-20 02:03:24 +02:00
parent 2185d2858a
commit 54faab2a28
3 changed files with 17 additions and 3 deletions
+7
View File
@@ -6,6 +6,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "Invoker.hpp"
#include "steppable.hpp" #include "steppable.hpp"
//ground truth domain data //ground truth domain data
@@ -40,4 +41,10 @@ public:
bool step(); bool step();
}; };
struct SortBinding {
std::shared_ptr<SortInput> input;
std::unique_ptr<Steppable> sort;
std::unique_ptr<Invoker> invoker;
};
#endif #endif
+5 -1
View File
@@ -16,7 +16,7 @@ void Timer::add_time(milliseconds deltatime) {
accumulator += deltatime; accumulator += deltatime;
if (accumulator >= triggerinterval) { if (accumulator >= triggerinterval) {
accumulator -= triggerinterval; accumulator -= triggerinterval;
callback(); request();
triggercount++; triggercount++;
if (!isinfinite && triggercount >= triggeramount){ if (!isinfinite && triggercount >= triggeramount){
isexpired=true; isexpired=true;
@@ -24,6 +24,10 @@ void Timer::add_time(milliseconds deltatime) {
} }
}; };
void Timer::request() {
callback();
}
void TimerManager::add_timer(size_t triggeramount, function<bool()> myaction, std::chrono::milliseconds triggerinterval) { void TimerManager::add_timer(size_t triggeramount, function<bool()> myaction, std::chrono::milliseconds triggerinterval) {
Timer mynewtimer(triggeramount, myaction, triggerinterval); Timer mynewtimer(triggeramount, myaction, triggerinterval);
timers.push_back(std::move(mynewtimer)); timers.push_back(std::move(mynewtimer));
+4 -1
View File
@@ -7,8 +7,9 @@
#include <chrono> #include <chrono>
#include <vector> #include <vector>
#include "Invoker.hpp"
//check if the timer is still valid, check if enough time has passed and if so, actuate action //check if the timer is still valid, check if enough time has passed and if so, actuate action
class Timer { class Timer: public Invoker {
public: public:
size_t triggeramount; size_t triggeramount;
bool isexpired = false; bool isexpired = false;
@@ -21,6 +22,8 @@ public:
void add_time(std::chrono::milliseconds deltatime); void add_time(std::chrono::milliseconds deltatime);
void request();
private: private:
std::chrono::milliseconds accumulator = std::chrono::milliseconds(0); std::chrono::milliseconds accumulator = std::chrono::milliseconds(0);
std::chrono::milliseconds triggerinterval = std::chrono::milliseconds(1000); //default to 1 sec std::chrono::milliseconds triggerinterval = std::chrono::milliseconds(1000); //default to 1 sec