mirror of https://github.com/meshcore-dev/MeshCore
Browse Source
* repeater: DISCOVER requests now with a simple RateLimiter (max 4, every 2 minutes)pull/1068/head
3 changed files with 36 additions and 4 deletions
@ -0,0 +1,23 @@ |
|||
#pragma once |
|||
|
|||
#include <stdint.h> |
|||
|
|||
class RateLimiter { |
|||
uint32_t _start_timestamp; |
|||
uint32_t _secs; |
|||
uint16_t _maximum, _count; |
|||
|
|||
public: |
|||
RateLimiter(uint16_t maximum, uint32_t secs): _maximum(maximum), _secs(secs), _start_timestamp(0), _count(0) { } |
|||
|
|||
bool allow(uint32_t now) { |
|||
if (now < _start_timestamp + _secs) { |
|||
_count++; |
|||
if (_count > _maximum) return false; // deny
|
|||
} else { // time window now expired
|
|||
_start_timestamp = now; |
|||
_count = 1; |
|||
} |
|||
return true; |
|||
} |
|||
}; |
|||
Loading…
Reference in new issue