Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
game_state_storage.h
1#ifndef CAVOKE_SERVER_GAME_STATE_STORAGE_H
2#define CAVOKE_SERVER_GAME_STATE_STORAGE_H
3
4#include <drogon/HttpAppFramework.h>
5#include <drogon/orm/DbClient.h>
6#include <map>
7#include <mutex>
8#include <nlohmann/json.hpp>
9#include <optional>
10#include <shared_mutex>
11#include <string>
12#include <vector>
13#include "cavoke_base_exception.h"
14
15namespace cavoke::server::model {
16
19 explicit game_state_error(std::string message);
20};
21
23public:
24 struct GameState {
25 bool is_terminal;
26 std::string global_state;
27 std::vector<std::string> players_state;
28 std::vector<int> winners;
29 };
30
31 void save_state(
32 const std::string &session_id,
34 drogon::orm::DbClientPtr dbClient = drogon::app().getDbClient());
35
36 GameState get_state(
37 const std::string &session_id,
38 drogon::orm::DbClientPtr dbClient = drogon::app().getDbClient());
39
40 std::string get_player_state(
41 const std::string &session_id,
42 int player_id,
43 drogon::orm::DbClientPtr = drogon::app().getDbClient());
44};
45
46NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(GameStateStorage::GameState,
47 is_terminal,
48 global_state,
49 players_state,
50 winners);
51
52} // namespace cavoke::server::model
53
54#endif // CAVOKE_SERVER_GAME_STATE_STORAGE_H
Base exception for errors thrown in server.
exception for errors thrown during actions with game states