|
Network System 0.1.1
High-performance modular networking library for scalable client-server applications
|
Per-client connection limiter. More...
#include <rate_limiter.h>

Public Member Functions | |
| per_client_connection_limiter (size_t max_per_client=10, size_t max_total=1000) | |
| Construct limiter. | |
| bool | try_accept (std::string_view client_id) |
| Try to accept a connection from a client. | |
| void | release (std::string_view client_id) |
| Release a connection from a client. | |
| size_t | client_connections (std::string_view client_id) const |
| Get connection count for a client. | |
| size_t | total_connections () const noexcept |
| Get total connection count. | |
Private Attributes | |
| size_t | max_per_client_ |
| connection_limiter | total_limiter_ |
| std::mutex | mutex_ |
| std::unordered_map< std::string, size_t > | client_connections_ |
Per-client connection limiter.
Limits connections per client identifier (e.g., IP address).
Definition at line 481 of file rate_limiter.h.
|
inlineexplicit |
Construct limiter.
| max_per_client | Maximum connections per client |
| max_total | Maximum total connections |
Definition at line 488 of file rate_limiter.h.
|
inlinenodiscard |
Get connection count for a client.
| client_id | Client identifier |
Definition at line 544 of file rate_limiter.h.
References client_connections_, and mutex_.
|
inline |
Release a connection from a client.
| client_id | Client identifier |
Definition at line 525 of file rate_limiter.h.
References client_connections_, mutex_, kcenon::network::connection_limiter::on_disconnect(), and total_limiter_.

|
inlinenodiscardnoexcept |
Get total connection count.
Definition at line 554 of file rate_limiter.h.
References kcenon::network::connection_limiter::current(), and total_limiter_.

|
inlinenodiscard |
Try to accept a connection from a client.
| client_id | Client identifier |
Definition at line 499 of file rate_limiter.h.
References kcenon::network::connection_limiter::can_accept(), client_connections_, max_per_client_, mutex_, total_limiter_, and kcenon::network::connection_limiter::try_accept().

|
private |
Definition at line 562 of file rate_limiter.h.
Referenced by client_connections(), release(), and try_accept().
|
private |
Definition at line 559 of file rate_limiter.h.
Referenced by try_accept().
|
mutableprivate |
Definition at line 561 of file rate_limiter.h.
Referenced by client_connections(), release(), and try_accept().
|
private |
Definition at line 560 of file rate_limiter.h.
Referenced by release(), total_connections(), and try_accept().