Files
pixelServer/ServerPixel/sessionManager.h
T
2022-07-16 15:39:16 +05:00

53 lines
921 B
C++

#include "session.h"
#include <vector>
#pragma once
class sessionManager
{
private:
std::vector<session> 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;
}
size_t getCount() { return sessions.size(); }
void setlimit(uint32_t limit) { this->limit = limit; }
bool isLimitReached()
{
return limit == sessions.size();
}
};