Simplify rate limiter code

This commit is contained in:
Oleg Kalachev
2025-11-02 00:03:37 +03:00
parent 8484854576
commit e22df3ab01

View File

@@ -50,18 +50,14 @@ void splitString(String& str, String& token0, String& token1, String& token2) {
token2 = strtok(NULL, ""); token2 = strtok(NULL, "");
} }
// Helper for running code at a fixed rate // Rate limiter
class Rate { class Rate {
public: public:
float rate; float rate;
float last = NAN; float last = 0;
Rate(float rate) : rate(rate) {} Rate(float rate) : rate(rate) {}
operator bool() { operator bool() {
if (isnan(last)) {
last = t;
return true;
}
if (t - last >= 1 / rate) { if (t - last >= 1 / rate) {
last = t; last = t;
return true; return true;
@@ -81,8 +77,7 @@ public:
if (!on) { if (!on) {
start = NAN; start = NAN;
return false; return false;
} } else if (isnan(start)) {
if (isnan(start)) {
start = t; start = t;
} }
return t - start >= delay; return t - start >= delay;