Connection Manager

namespace HTTPServer
struct ConnectedIp

Public Members

int active = 0
TokenBucket tokenBucket
class ConnectionManager

Public Functions

bool canAcceptConnection(const std::string &ip)
void addConnection(const std::string &ip)
void removeConnection(const std::string &ip)
bool allowRequest(const std::string &ip)
void removeIdleConnections()

Public Static Functions

static ConnectionManager &instance()

Private Functions

ConnectionManager() = default
~ConnectionManager() = default
ConnectionManager(const ConnectionManager&) = delete
ConnectionManager &operator=(const ConnectionManager&) = delete

Private Members

std::mutex d_mtx
std::unordered_map<std::string, ConnectedIp> d_ips
struct TokenBucket

Public Members

double tokens = Config::get().kMaxTokens
std::chrono::steady_clock::time_point last_seen = std::chrono::steady_clock::now()