#include "session.h" #include #include #pragma once class sessionManager { private: std::vector sessions; uint32_t limit = 0; public: bool add(session s) { if (isLimitReached()) return false; sessions.push_back(s); return true; } void remove(uint32_t id) { for (uint32_t i = 0; i < sessions.size(); ++i) if (sessions[i].getId() == id) sessions.erase(sessions.begin() + i); } bool getById(uint32_t id, session** s) { for (int i = 0; i < sessions.size(); ++i) if (sessions[i].getId() == id) { *s = &(*(sessions.begin() + i)); return true; } return false; } bool existsOwnerIp(std::string ip) { for (auto& s : sessions) if (s.getOwnerIp() == ip) return true; return false; } bool existsOwnerId(uint32_t id) { for (auto& s : sessions) if (s.getOwnerId() == id) return true; return false; } size_t getCount() { return sessions.size(); } void setlimit(uint32_t limit) { this->limit = limit; } bool isLimitReached() { return limit == sessions.size(); } uint16_t getMinPort() { if (!sessions.size()) return 0; std::vector ports; for (auto& s : sessions) ports.push_back(s.getPort()); std::sort(ports.begin(), ports.end(), [](uint16_t a, uint16_t b) { return a > b; }); return *(ports.begin()); } };