| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <array> |
| | #include <functional> |
| | #include <string> |
| | #include <vector> |
| | #include "common/common_types.h" |
| | #include "common/web_result.h" |
| |
|
| | namespace AnnounceMultiplayerRoom { |
| |
|
| | using MacAddress = std::array<u8, 6>; |
| |
|
| | struct Room { |
| | struct Member { |
| | std::string username; |
| | std::string nickname; |
| | std::string avatar_url; |
| | MacAddress mac_address; |
| | std::string game_name; |
| | u64 game_id; |
| | }; |
| | std::string id; |
| | std::string verify_UID; |
| | std::string name; |
| | std::string description; |
| | std::string owner; |
| | std::string ip; |
| | u16 port; |
| | u32 max_player; |
| | u32 net_version; |
| | bool has_password; |
| | std::string preferred_game; |
| | u64 preferred_game_id; |
| |
|
| | std::vector<Member> members; |
| | }; |
| | using RoomList = std::vector<Room>; |
| |
|
| | |
| | |
| | |
| | |
| | class Backend : NonCopyable { |
| | public: |
| | virtual ~Backend() = default; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | virtual void SetRoomInformation(const std::string& name, const std::string& description, |
| | const u16 port, const u32 max_player, const u32 net_version, |
| | const bool has_password, const std::string& preferred_game, |
| | const u64 preferred_game_id) = 0; |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | virtual void AddPlayer(const std::string& username, const std::string& nickname, |
| | const std::string& avatar_url, const MacAddress& mac_address, |
| | const u64 game_id, const std::string& game_name) = 0; |
| |
|
| | |
| | |
| | |
| | |
| | virtual Common::WebResult Update() = 0; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | virtual Common::WebResult Register() = 0; |
| |
|
| | |
| | |
| | |
| | virtual void ClearPlayers() = 0; |
| |
|
| | |
| | |
| | |
| | |
| | virtual RoomList GetRoomList() = 0; |
| |
|
| | |
| | |
| | |
| | virtual void Delete() = 0; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | class NullBackend : public Backend { |
| | public: |
| | ~NullBackend() = default; |
| | void SetRoomInformation(const std::string& , const std::string& , |
| | const u16 , const u32 , const u32 , |
| | const bool , const std::string& , |
| | const u64 ) override {} |
| | void AddPlayer(const std::string& , const std::string& , |
| | const std::string& , const MacAddress& , |
| | const u64 , const std::string& ) override {} |
| | Common::WebResult Update() override { |
| | return Common::WebResult{Common::WebResult::Code::NoWebservice, "WebService is missing"}; |
| | } |
| | Common::WebResult Register() override { |
| | return Common::WebResult{Common::WebResult::Code::NoWebservice, "WebService is missing"}; |
| | } |
| | void ClearPlayers() override {} |
| | RoomList GetRoomList() override { |
| | return RoomList{}; |
| | } |
| |
|
| | void Delete() override {} |
| | }; |
| |
|
| | } |
| |
|