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


Public Types | |
| using | clock = std::chrono::steady_clock |
Public Member Functions | |
| leaky_bucket_limiter (const std::string &name, double rate, size_t capacity) | |
| 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 | leak () |
Private Attributes | |
| std::string | name_ |
| double | rate_ |
| size_t | capacity_ |
| double | water_ |
| clock::time_point | last_leak_ |
| std::mutex | mutex_ |
Leaky bucket rate limiter implementation.
Uses the leaky bucket algorithm for rate limiting. Requests fill the bucket and it leaks at a constant rate.
Definition at line 268 of file resource_manager.h.
| using kcenon::monitoring::leaky_bucket_limiter::clock = std::chrono::steady_clock |
Definition at line 270 of file resource_manager.h.
|
inline |
Definition at line 272 of file resource_manager.h.
|
inlineoverridevirtual |
Get the name of this rate limiter.
Implements kcenon::monitoring::rate_limiter.
Definition at line 290 of file resource_manager.h.
References name_.
|
inlineprivate |
Definition at line 295 of file resource_manager.h.
References last_leak_, rate_, and water_.
Referenced by try_acquire().

|
inlineoverridevirtual |
Try to acquire tokens.
| count | Number of tokens to acquire |
Implements kcenon::monitoring::rate_limiter.
Definition at line 279 of file resource_manager.h.
References capacity_, leak(), mutex_, and water_.

|
private |
Definition at line 304 of file resource_manager.h.
Referenced by try_acquire().
|
private |
Definition at line 306 of file resource_manager.h.
Referenced by leak().
|
mutableprivate |
Definition at line 307 of file resource_manager.h.
Referenced by try_acquire().
|
private |
Definition at line 302 of file resource_manager.h.
Referenced by get_name().
|
private |
Definition at line 303 of file resource_manager.h.
Referenced by leak().
|
private |
Definition at line 305 of file resource_manager.h.
Referenced by leak(), and try_acquire().