libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
periodiccallback.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <functional>
14#include <promeki/function.h>
15#include <promeki/namespace.h>
16#include <promeki/timestamp.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
45class PeriodicCallback {
46 public:
48 using Function = promeki::Function<void()>;
49
51 PeriodicCallback() = default;
52
58 PeriodicCallback(double intervalSeconds, Function func);
59
68 bool service();
69
76 void reset();
77
79 void setInterval(double seconds) { _intervalSeconds = seconds; }
80
82 double interval() const { return _intervalSeconds; }
83
85 void setCallback(Function func) { _func = std::move(func); }
86
88 bool isValid() const { return _func && _intervalSeconds > 0.0; }
89
90 private:
91 Function _func;
92 double _intervalSeconds = 0.0;
93 TimeStamp _stamp;
94 bool _started = false;
95};
96
97PROMEKI_NAMESPACE_END
98
99#endif // PROMEKI_ENABLE_CORE