|
Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
|
Token bucket rate limiter implementation. More...
#include <resource_manager.h>


Public Types | |
| using | clock = std::chrono::steady_clock |
Public Member Functions | |
| token_bucket_limiter (const std::string &name, double rate, size_t capacity, throttling_strategy=throttling_strategy::reject) | |
| bool | try_acquire (size_t count=1) override |
| Try to acquire tokens. | |
| const std::string & | get_name () const override |
| Get the name of this rate limiter. | |
Public Member Functions inherited from kcenon::monitoring::rate_limiter | |
| virtual | ~rate_limiter ()=default |
| template<typename Func > | |
| auto | execute (Func &&func) -> decltype(func()) |
| Execute a function with rate limiting. | |
Private Member Functions | |
| void | refill () |
Private Attributes | |
| std::string | name_ |
| double | rate_ |
| size_t | capacity_ |
| double | tokens_ |
| clock::time_point | last_refill_ |
| std::mutex | mutex_ |
Token bucket rate limiter implementation.
Uses the token bucket algorithm for rate limiting. Tokens are added at a fixed rate and consumed by requests.
Definition at line 215 of file resource_manager.h.
| using kcenon::monitoring::token_bucket_limiter::clock = std::chrono::steady_clock |
Definition at line 217 of file resource_manager.h.
|
inline |
Definition at line 219 of file resource_manager.h.
|
inlineoverridevirtual |
Get the name of this rate limiter.
Implements kcenon::monitoring::rate_limiter.
Definition at line 238 of file resource_manager.h.
References name_.
|
inlineprivate |
Definition at line 243 of file resource_manager.h.
References capacity_, last_refill_, rate_, and tokens_.
Referenced by try_acquire().

|
inlineoverridevirtual |
Try to acquire tokens.
| count | Number of tokens to acquire |
Implements kcenon::monitoring::rate_limiter.
Definition at line 227 of file resource_manager.h.
References mutex_, refill(), and tokens_.

|
private |
Definition at line 252 of file resource_manager.h.
Referenced by refill().
|
private |
Definition at line 254 of file resource_manager.h.
Referenced by refill().
|
mutableprivate |
Definition at line 255 of file resource_manager.h.
Referenced by try_acquire().
|
private |
Definition at line 250 of file resource_manager.h.
Referenced by get_name().
|
private |
Definition at line 251 of file resource_manager.h.
Referenced by refill().
|
private |
Definition at line 253 of file resource_manager.h.
Referenced by refill(), and try_acquire().