Files
eden/src/network/network.cpp
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

52 lines
1.3 KiB
C++
Raw Normal View History

// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
2025-06-05 18:59:47 +00:00
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "common/assert.h"
#include "common/logging/log.h"
#include "enet/enet.h"
#include "network/network.h"
namespace Network {
2025-06-05 18:59:47 +00:00
static std::shared_ptr<RoomMember> g_room_member; ///< RoomMember (Client) for network games
static std::shared_ptr<Room> g_room; ///< Room (Server) for network games
2025-06-05 18:59:47 +00:00
bool Init() {
if (enet_initialize() != 0) {
2022-09-23 13:38:23 +02:00
LOG_ERROR(Network, "Error initializing ENet");
return false;
}
2025-06-05 18:59:47 +00:00
g_room = std::make_shared<Room>();
g_room_member = std::make_shared<RoomMember>();
LOG_DEBUG(Network, "initialized OK");
return true;
}
2025-06-05 18:59:47 +00:00
std::weak_ptr<Room> GetRoom() {
return g_room;
}
2025-06-05 18:59:47 +00:00
std::weak_ptr<RoomMember> GetRoomMember() {
return g_room_member;
}
2025-06-05 18:59:47 +00:00
void Shutdown() {
if (g_room_member) {
if (g_room_member->IsConnected())
g_room_member->Leave();
g_room_member.reset();
}
2025-06-05 18:59:47 +00:00
if (g_room) {
if (g_room->GetState() == Room::State::Open)
g_room->Destroy();
g_room.reset();
}
enet_deinitialize();
LOG_DEBUG(Network, "shutdown OK");
}
} // namespace Network