announce_room_json.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <functional>
  5. #include <string>
  6. #include "common/announce_multiplayer_room.h"
  7. #include "web_service/web_backend.h"
  8. namespace WebService {
  9. /**
  10. * Implementation of AnnounceMultiplayerRoom::Backend that (de)serializes room information into/from
  11. * JSON, and submits/gets it to/from the yuzu web service
  12. */
  13. class RoomJson : public AnnounceMultiplayerRoom::Backend {
  14. public:
  15. RoomJson(const std::string& host_, const std::string& username_, const std::string& token_)
  16. : client(host_, username_, token_), host(host_), username(username_), token(token_) {}
  17. ~RoomJson() = default;
  18. void SetRoomInformation(const std::string& name, const std::string& description, const u16 port,
  19. const u32 max_player, const u32 net_version, const bool has_password,
  20. const AnnounceMultiplayerRoom::GameInfo& preferred_game) override;
  21. void AddPlayer(const AnnounceMultiplayerRoom::Member& member) override;
  22. WebResult Update() override;
  23. WebResult Register() override;
  24. void ClearPlayers() override;
  25. AnnounceMultiplayerRoom::RoomList GetRoomList() override;
  26. void Delete() override;
  27. private:
  28. AnnounceMultiplayerRoom::Room room;
  29. Client client;
  30. std::string host;
  31. std::string username;
  32. std::string token;
  33. std::string room_id;
  34. };
  35. } // namespace WebService