summaryrefslogtreecommitdiffstats
path: root/src/web_service/announce_room_json.h
diff options
context:
space:
mode:
authorFearlessTobi <thm.frey@gmail.com>2021-12-25 20:27:52 +0100
committerFearlessTobi <thm.frey@gmail.com>2022-07-25 21:59:28 +0200
commit705f7db84dd85555a6aef1e136cf251725cef293 (patch)
treee110c6482a11d711d18515afce4fc50adcee76e7 /src/web_service/announce_room_json.h
parentnetwork: Add initial files and enet dependency (diff)
downloadyuzu-705f7db84dd85555a6aef1e136cf251725cef293.tar
yuzu-705f7db84dd85555a6aef1e136cf251725cef293.tar.gz
yuzu-705f7db84dd85555a6aef1e136cf251725cef293.tar.bz2
yuzu-705f7db84dd85555a6aef1e136cf251725cef293.tar.lz
yuzu-705f7db84dd85555a6aef1e136cf251725cef293.tar.xz
yuzu-705f7db84dd85555a6aef1e136cf251725cef293.tar.zst
yuzu-705f7db84dd85555a6aef1e136cf251725cef293.zip
Diffstat (limited to 'src/web_service/announce_room_json.h')
-rw-r--r--src/web_service/announce_room_json.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/web_service/announce_room_json.h b/src/web_service/announce_room_json.h
new file mode 100644
index 000000000..ac02af5b1
--- /dev/null
+++ b/src/web_service/announce_room_json.h
@@ -0,0 +1,46 @@
+// Copyright 2017 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <functional>
+#include <string>
+#include "common/announce_multiplayer_room.h"
+#include "web_service/web_backend.h"
+
+namespace WebService {
+
+/**
+ * Implementation of AnnounceMultiplayerRoom::Backend that (de)serializes room information into/from
+ * JSON, and submits/gets it to/from the yuzu web service
+ */
+class RoomJson : public AnnounceMultiplayerRoom::Backend {
+public:
+ RoomJson(const std::string& host, const std::string& username, const std::string& token)
+ : client(host, username, token), host(host), username(username), token(token) {}
+ ~RoomJson() = default;
+ 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) override;
+ void AddPlayer(const std::string& username_, const std::string& nickname_,
+ const std::string& avatar_url,
+ const AnnounceMultiplayerRoom::MacAddress& mac_address, const u64 game_id,
+ const std::string& game_name) override;
+ WebResult Update() override;
+ WebResult Register() override;
+ void ClearPlayers() override;
+ AnnounceMultiplayerRoom::RoomList GetRoomList() override;
+ void Delete() override;
+
+private:
+ AnnounceMultiplayerRoom::Room room;
+ Client client;
+ std::string host;
+ std::string username;
+ std::string token;
+ std::string room_id;
+};
+
+} // namespace WebService