Files
ToyBattlesHQ/MainServer/include/Network/MainSessionManager.h
2025-06-11 02:26:05 +02:00

67 lines
2.2 KiB
C++

#ifndef MAIN_SESSIONS_MANAGER_H
#define MAIN_SESSIONS_MANAGER_H
#include <unordered_map>
#include <vector>
#include <functional>
#include "MainSession.h"
#include "../Classes/RoomsManager.h"
#include "../Classes/ClansManager.h"
namespace Main
{
namespace Network
{
class SessionsManager
{
private:
std::unordered_map<std::uint64_t, std::shared_ptr<Main::Network::Session>> m_sessionsBySessionId;
std::vector<std::shared_ptr<Main::Network::Session>> m_sessionsVector;
Main::Classes::RoomsManager* roomsManager;
Main::Classes::ClansManager* m_clansManager;
Common::Network::Packet prepareMessage(const std::string& message) const;
public:
void setRoomsManager(Main::Classes::RoomsManager* roomsManager);
void setClansManager(Main::Classes::ClansManager* clansManager);
void addSession(std::shared_ptr<Main::Network::Session> session);
void removeSession(std::size_t sessionId);
const std::unordered_map<std::uint64_t, std::shared_ptr<Main::Network::Session>>& getAllSessions() const;
std::unordered_map<std::uint64_t, std::shared_ptr<Main::Network::Session>>& getAllSessions();
std::vector<std::shared_ptr<Main::Network::Session>> getAllSessionsVec() const;
void broadcast(const Common::Network::Packet& message) const;
void broadcastExceptSelf(std::size_t selfSessionId, const Common::Network::Packet& message) const;
void broadcastToLobbyExceptSelf(std::size_t selfSessionId, const Common::Network::Packet& message) const;
void broadcastToClan(std::uint64_t selfSessionId, const Common::Network::Packet& message) const;
void broadcastMessage(const std::string& message) const;
void broadcastMessageExceptSelf(std::size_t selfSessionId, const std::string& message) const;
void broadcastMessageToLobby(const std::string& message) const;
std::shared_ptr<Main::Network::Session> findSessionByName(const char* nickname);
std::shared_ptr<Main::Network::Session> getSessionByAccountId(std::uint32_t aid);
std::shared_ptr<Main::Network::Session> getSessionBySessionId(std::size_t sessionId);
std::uint32_t getTotalSessions() const;
bool sendTo(std::size_t sessionId, const Common::Network::Packet& packet);
Main::Classes::RoomsManager* getRoomsManager()
{
return roomsManager;
}
};
}
}
#endif