Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
state_controller.h
1#ifndef CAVOKE_STATE_CONTROLLER_H
2#define CAVOKE_STATE_CONTROLLER_H
3
4#include <drogon/HttpController.h>
5#include "filters/AuthFilter.h"
6#include "model/games/games_storage.h"
7#include "model/logic/game_logic_manager.h"
8#include "model/sessions/sessions_storage.h"
9
10namespace cavoke::server::controllers {
11
12class StateController : public drogon::HttpController<StateController, false> {
13 std::shared_ptr<model::GamesStorage> m_games_storage;
14 std::shared_ptr<model::GameLogicManager> m_game_logic_manager;
15 std::shared_ptr<model::GameStateStorage> m_game_state_storage;
16 std::shared_ptr<model::SessionsStorage> m_participation_storage;
17
18public:
20 std::shared_ptr<model::GamesStorage> mGamesStorage,
21 std::shared_ptr<model::GameLogicManager> mGameLogicManager,
22 std::shared_ptr<model::GameStateStorage> mGameStateStorage,
23 std::shared_ptr<model::SessionsStorage> mParticipationStorage);
24
25public:
26 METHOD_LIST_BEGIN
27 ADD_METHOD_TO(StateController::send_move,
28 "/play/{session_id}/send_move",
29 drogon::Post,
30 "AuthFilter");
31 ADD_METHOD_TO(StateController::get_state,
32 "/play/{session_id}/get_state",
33 drogon::Get,
34 "AuthFilter");
35 METHOD_LIST_END
36
37protected:
38 void send_move(
39 const drogon::HttpRequestPtr &req,
40 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
41 const std::string &session_id);
42
43 void get_state(
44 const drogon::HttpRequestPtr &req,
45 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
46 const std::string &session_id);
47};
48
49} // namespace cavoke::server::controllers
50
51#endif // CAVOKE_STATE_CONTROLLER_H