diff options
| author | liamwhite <liamwhite@users.noreply.github.com> | 2022-07-25 18:31:45 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-25 18:31:45 -0400 |
| commit | 2c40b423fe2f53ef5727729ea40f3208852f322c (patch) | |
| tree | 999411f1ca76390654d1034c6d0bd2c47c3f101c /src/network/network.cpp | |
| parent | e2647971f8e736821a19680e150f766fa544567c (diff) | |
| parent | cdb20e9afa1c28a7eb8c86e6083328ee261ab8c2 (diff) | |
Merge pull request #8541 from FearlessTobi/multiplayer-part1
yuzu, network: Add room service and UI configuration
Diffstat (limited to 'src/network/network.cpp')
| -rw-r--r-- | src/network/network.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp new file mode 100644 index 0000000000..0841e41347 --- /dev/null +++ b/src/network/network.cpp @@ -0,0 +1,50 @@ +// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/assert.h" +#include "common/logging/log.h" +#include "enet/enet.h" +#include "network/network.h" + +namespace Network { + +RoomNetwork::RoomNetwork() { + m_room = std::make_shared<Room>(); + m_room_member = std::make_shared<RoomMember>(); +} + +bool RoomNetwork::Init() { + if (enet_initialize() != 0) { + LOG_ERROR(Network, "Error initalizing ENet"); + return false; + } + m_room = std::make_shared<Room>(); + m_room_member = std::make_shared<RoomMember>(); + LOG_DEBUG(Network, "initialized OK"); + return true; +} + +std::weak_ptr<Room> RoomNetwork::GetRoom() { + return m_room; +} + +std::weak_ptr<RoomMember> RoomNetwork::GetRoomMember() { + return m_room_member; +} + +void RoomNetwork::Shutdown() { + if (m_room_member) { + if (m_room_member->IsConnected()) + m_room_member->Leave(); + m_room_member.reset(); + } + if (m_room) { + if (m_room->GetState() == Room::State::Open) + m_room->Destroy(); + m_room.reset(); + } + enet_deinitialize(); + LOG_DEBUG(Network, "shutdown OK"); +} + +} // namespace Network |
