aboutsummaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorAleksandr Popovich <alekpopo@pm.me>2025-06-05 18:59:47 +0000
committercrueter <crueter@noreply.localhost>2025-06-05 18:59:47 +0000
commit76fa5255926da8f6339e7be5bf106646acedf78a (patch)
tree8ea533a7d748a9a5404e15a1063b11a832b2f007 /src/network
parent7e13da47af71814d612c6c060be68e8ba84271ff (diff)
Added the public lobby to android. (#125)
This is adapted from kleidis old PR to Azahar. Changes from it: - Fixed inconsistent button styling in the dialog for connection - Allowed to hide both empty and full rooms. - Proper serving of preferred games - Enables web service for android by default - Better implementation of multiplayer.cpp that works with oop Also fixes the room network class and turns it into a static namespace in network Signed-off-by: Aleksandr Popovich <alekpopo@pm.me> Co-authored-by: swurl <swurl@swurl.xyz> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/125 Co-authored-by: Aleksandr Popovich <alekpopo@pm.me> Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/announce_multiplayer_session.cpp10
-rw-r--r--src/network/announce_multiplayer_session.h9
-rw-r--r--src/network/network.cpp41
-rw-r--r--src/network/network.h28
-rw-r--r--src/network/room.cpp2
-rw-r--r--src/network/room.h2
6 files changed, 45 insertions, 47 deletions
diff --git a/src/network/announce_multiplayer_session.cpp b/src/network/announce_multiplayer_session.cpp
index 6737ce85ad..35082cbd31 100644
--- a/src/network/announce_multiplayer_session.cpp
+++ b/src/network/announce_multiplayer_session.cpp
@@ -1,6 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
#include <chrono>
#include <future>
#include <vector>
@@ -19,8 +22,7 @@ namespace Core {
// Time between room is announced to web_service
static constexpr std::chrono::seconds announce_time_interval(15);
-AnnounceMultiplayerSession::AnnounceMultiplayerSession(Network::RoomNetwork& room_network_)
- : room_network{room_network_} {
+AnnounceMultiplayerSession::AnnounceMultiplayerSession() {
#ifdef ENABLE_WEB_SERVICE
backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url.GetValue(),
Settings::values.yuzu_username.GetValue(),
@@ -31,7 +33,7 @@ AnnounceMultiplayerSession::AnnounceMultiplayerSession(Network::RoomNetwork& roo
}
WebService::WebResult AnnounceMultiplayerSession::Register() {
- auto room = room_network.GetRoom().lock();
+ auto room = Network::GetRoom().lock();
if (!room) {
return WebService::WebResult{WebService::WebResult::Code::LibError,
"Network is not initialized", ""};
@@ -120,7 +122,7 @@ void AnnounceMultiplayerSession::AnnounceMultiplayerLoop() {
std::future<WebService::WebResult> future;
while (!shutdown_event.WaitUntil(update_time)) {
update_time += announce_time_interval;
- auto room = room_network.GetRoom().lock();
+ auto room = Network::GetRoom().lock();
if (!room) {
break;
}
diff --git a/src/network/announce_multiplayer_session.h b/src/network/announce_multiplayer_session.h
index db790f7d2d..9d9673d97a 100644
--- a/src/network/announce_multiplayer_session.h
+++ b/src/network/announce_multiplayer_session.h
@@ -1,6 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
#pragma once
#include <atomic>
@@ -15,7 +18,6 @@
namespace Network {
class Room;
-class RoomNetwork;
} // namespace Network
namespace Core {
@@ -28,7 +30,8 @@ namespace Core {
class AnnounceMultiplayerSession {
public:
using CallbackHandle = std::shared_ptr<std::function<void(const WebService::WebResult&)>>;
- AnnounceMultiplayerSession(Network::RoomNetwork& room_network_);
+
+ AnnounceMultiplayerSession();
~AnnounceMultiplayerSession();
/**
@@ -91,8 +94,6 @@ private:
std::unique_ptr<AnnounceMultiplayerRoom::Backend> backend;
std::atomic_bool registered = false; ///< Whether the room has been registered
-
- Network::RoomNetwork& room_network;
};
} // namespace Core
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 6652a186bb..0314b51d2c 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -1,6 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+// 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"
@@ -8,40 +11,38 @@
namespace Network {
-RoomNetwork::RoomNetwork() {
- m_room = std::make_shared<Room>();
- m_room_member = std::make_shared<RoomMember>();
-}
+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
-bool RoomNetwork::Init() {
+bool Init() {
if (enet_initialize() != 0) {
LOG_ERROR(Network, "Error initializing ENet");
return false;
}
- m_room = std::make_shared<Room>();
- m_room_member = std::make_shared<RoomMember>();
+ g_room = std::make_shared<Room>();
+ g_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<Room> GetRoom() {
+ return g_room;
}
-std::weak_ptr<RoomMember> RoomNetwork::GetRoomMember() {
- return m_room_member;
+std::weak_ptr<RoomMember> GetRoomMember() {
+ return g_room_member;
}
-void RoomNetwork::Shutdown() {
- if (m_room_member) {
- if (m_room_member->IsConnected())
- m_room_member->Leave();
- m_room_member.reset();
+void Shutdown() {
+ if (g_room_member) {
+ if (g_room_member->IsConnected())
+ g_room_member->Leave();
+ g_room_member.reset();
}
- if (m_room) {
- if (m_room->GetState() == Room::State::Open)
- m_room->Destroy();
- m_room.reset();
+ if (g_room) {
+ if (g_room->GetState() == Room::State::Open)
+ g_room->Destroy();
+ g_room.reset();
}
enet_deinitialize();
LOG_DEBUG(Network, "shutdown OK");
diff --git a/src/network/network.h b/src/network/network.h
index e4de207b27..1e1a19a3b9 100644
--- a/src/network/network.h
+++ b/src/network/network.h
@@ -1,6 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
#pragma once
#include <memory>
@@ -9,25 +12,16 @@
namespace Network {
-class RoomNetwork {
-public:
- RoomNetwork();
-
- /// Initializes and registers the network device, the room, and the room member.
- bool Init();
-
- /// Returns a pointer to the room handle
- std::weak_ptr<Room> GetRoom();
+/// Initializes and registers the network device, the room, and the room member.
+bool Init();
- /// Returns a pointer to the room member handle
- std::weak_ptr<RoomMember> GetRoomMember();
+/// Returns a pointer to the room handle
+std::weak_ptr<Room> GetRoom();
- /// Unregisters the network device, the room, and the room member and shut them down.
- void Shutdown();
+/// Returns a pointer to the room member handle
+std::weak_ptr<RoomMember> GetRoomMember();
-private:
- std::shared_ptr<RoomMember> m_room_member; ///< RoomMember (Client) for network games
- std::shared_ptr<Room> m_room; ///< Room (Server) for network games
-};
+/// Unregisters the network device, the room, and the room member and shut them down.
+void Shutdown();
} // namespace Network
diff --git a/src/network/room.cpp b/src/network/room.cpp
index 49d7ed3313..a4acdad859 100644
--- a/src/network/room.cpp
+++ b/src/network/room.cpp
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-// SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project / Eden Emulator Project
+// SPDX-FileCopyrightText: 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/network/room.h b/src/network/room.h
index 780629ada3..a2ae792431 100644
--- a/src/network/room.h
+++ b/src/network/room.h
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-// SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project / Eden Emulator Project
+// SPDX-FileCopyrightText: 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later