ConnectX 3.0
ConnectX Game Suite
Loading...
Searching...
No Matches
session_manager.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <map>
5#include <memory>
6#include <optional>
7#include <cstdint>
8#include <mutex>
9#include <random>
10
15{
16 uint32_t connection_id;
17 uint32_t player_id;
18 uint32_t game_id;
19 std::string session_token;
20 std::string player_name;
21
23};
24
29{
30public:
32
37 std::string createSession(uint32_t connection_id, const std::string &player_name);
38
43 std::optional<uint32_t> validateToken(const std::string &token);
44
48 std::optional<ClientSession> getSessionByConnection(uint32_t connection_id);
49
53 std::optional<ClientSession> getSessionByToken(const std::string &token);
54
58 void assignToGame(const std::string &token, uint32_t game_id, uint32_t player_id);
59
63 void removeSession(uint32_t connection_id);
64
68 void removeSessionByToken(const std::string &token);
69
70private:
71 std::string generateToken();
72
73 std::map<std::string, ClientSession> sessions_; // token -> session
74 std::map<uint32_t, std::string> connection_to_token_; // connection_id -> token
75 std::mutex mutex_;
76 std::mt19937_64 rng_;
77};
Definition session_manager.hpp:29
std::optional< uint32_t > validateToken(const std::string &token)
Definition session_manager.cpp:31
void assignToGame(const std::string &token, uint32_t game_id, uint32_t player_id)
Definition session_manager.cpp:70
void removeSessionByToken(const std::string &token)
Definition session_manager.cpp:95
std::optional< ClientSession > getSessionByToken(const std::string &token)
Definition session_manager.cpp:57
void removeSession(uint32_t connection_id)
Definition session_manager.cpp:83
SessionManager()
Definition session_manager.cpp:5
std::string createSession(uint32_t connection_id, const std::string &player_name)
Definition session_manager.cpp:11
std::optional< ClientSession > getSessionByConnection(uint32_t connection_id)
Definition session_manager.cpp:44
Definition session_manager.hpp:15
uint32_t connection_id
Definition session_manager.hpp:16
ClientSession()
Definition session_manager.hpp:22
uint32_t player_id
Definition session_manager.hpp:17
uint32_t game_id
Definition session_manager.hpp:18
std::string session_token
Definition session_manager.hpp:19
std::string player_name
Definition session_manager.hpp:20