Eile Mit Weile
Loading...
Searching...
No Matches
ClientRequest.hpp
Go to the documentation of this file.
1#ifndef EILE_MIT_WEILE_CLIENTREQUEST_HPP
2#define EILE_MIT_WEILE_CLIENTREQUEST_HPP
3
4#include <string>
5#include <unordered_map>
6#include <iostream>
7#include <utility>
8#include "rapidjson/document.h"
9#include "common/serialization/serializable.hpp"
10#include "common/exceptions/EileMitWeileException.hpp"
11#include "common/serialization/uuid_generator.hpp"
12#include "common/serialization/json_utils.hpp"
13
23 join_game,
24 start_game,
25 move_figure,
26 skip_turn,
27 throw_dice
28};
29
39
40 public:
41 virtual ~ClientRequest() = default;
42
43 [[nodiscard]] RequestType GetType() const;
44 [[nodiscard]] std::string GetReqId() const;
45 [[nodiscard]] std::string GetGameId() const;
46 [[nodiscard]] std::string GetPlayerId() const;
48 void WriteIntoJson(rapidjson::Value& json, rapidjson::Document::AllocatorType& allocator) const override;
51 static const std::unordered_map<std::string, RequestType> _string_to_request_type;
52 static const std::unordered_map<RequestType, std::string> _request_type_to_string;
54 protected:
55
65 std::string _req_id;
66 std::string _player_id;
67 std::string _game_id;
68 };
69
71 std::string _req_id;
72 std::string _player_id;
73 std::string _game_id;
75 explicit ClientRequest(const BaseClassProperties&);
76 static BaseClassProperties CreateBaseClassProperties(RequestType type, std::string req_id, std::string& player_id, std::string& game_id);
77 static BaseClassProperties ExtractBaseClassProperties(const rapidjson::Value& json);
78};
79#endif //EILE_MIT_WEILE_CLIENTREQUEST_HPP
RequestType
Identifier for the different request types.
Definition ClientRequest.hpp:22
Base class for all requests that are being sent from the client to the server.
Definition ClientRequest.hpp:38
static BaseClassProperties CreateBaseClassProperties(RequestType type, std::string req_id, std::string &player_id, std::string &game_id)
Definition ClientRequest.cpp:59
std::string _req_id
Definition ClientRequest.hpp:71
static const std::unordered_map< RequestType, std::string > _request_type_to_string
Definition ClientRequest.hpp:43
std::string GetReqId() const
Definition ClientRequest.cpp:7
std::string GetPlayerId() const
Definition ClientRequest.cpp:15
std::string GetGameId() const
Definition ClientRequest.cpp:11
static const std::unordered_map< std::string, RequestType > _string_to_request_type
Definition ClientRequest.hpp:35
std::string _game_id
Definition ClientRequest.hpp:73
static BaseClassProperties ExtractBaseClassProperties(const rapidjson::Value &json)
Definition ClientRequest.cpp:74
void WriteIntoJson(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) const override
Definition ClientRequest.cpp:19
std::string _player_id
Definition ClientRequest.hpp:72
RequestType GetType() const
Definition ClientRequest.cpp:3
RequestType _type
Definition ClientRequest.hpp:70
ClientRequest(const BaseClassProperties &)
Definition ClientRequest.cpp:52
Abstract Base Class for a serializable object.
Definition serializable.hpp:17
Holds the properties that are common to all ClientRequest subclasses.
Definition ClientRequest.hpp:63
std::string _player_id
Definition ClientRequest.hpp:66
RequestType _type
Definition ClientRequest.hpp:64
std::string _game_id
Definition ClientRequest.hpp:67
std::string _req_id
Definition ClientRequest.hpp:65