network.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "common/assert.h"
  4. #include "common/logging/log.h"
  5. #include "enet/enet.h"
  6. #include "network/network.h"
  7. namespace Network {
  8. RoomNetwork::RoomNetwork() {
  9. m_room = std::make_shared<Room>();
  10. m_room_member = std::make_shared<RoomMember>();
  11. }
  12. bool RoomNetwork::Init() {
  13. if (enet_initialize() != 0) {
  14. LOG_ERROR(Network, "Error initalizing ENet");
  15. return false;
  16. }
  17. m_room = std::make_shared<Room>();
  18. m_room_member = std::make_shared<RoomMember>();
  19. LOG_DEBUG(Network, "initialized OK");
  20. return true;
  21. }
  22. std::weak_ptr<Room> RoomNetwork::GetRoom() {
  23. return m_room;
  24. }
  25. std::weak_ptr<RoomMember> RoomNetwork::GetRoomMember() {
  26. return m_room_member;
  27. }
  28. void RoomNetwork::Shutdown() {
  29. if (m_room_member) {
  30. if (m_room_member->IsConnected())
  31. m_room_member->Leave();
  32. m_room_member.reset();
  33. }
  34. if (m_room) {
  35. if (m_room->GetState() == Room::State::Open)
  36. m_room->Destroy();
  37. m_room.reset();
  38. }
  39. enet_deinitialize();
  40. LOG_DEBUG(Network, "shutdown OK");
  41. }
  42. } // namespace Network