From a6ccbe3876f595ef045aa4334aabf9ac310fe863 Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Sat, 26 Jun 2021 21:30:11 +0200 Subject: [PATCH] Remove NetworkManager and move peer creation/shutdown to NetworkPeer class --- Source/Engine/Networking/NetworkManager.cpp | 44 --------------------- Source/Engine/Networking/NetworkManager.h | 31 --------------- Source/Engine/Networking/NetworkPeer.cpp | 34 ++++++++++++++++ Source/Engine/Networking/NetworkPeer.h | 19 ++++++++- 4 files changed, 52 insertions(+), 76 deletions(-) delete mode 100644 Source/Engine/Networking/NetworkManager.cpp delete mode 100644 Source/Engine/Networking/NetworkManager.h diff --git a/Source/Engine/Networking/NetworkManager.cpp b/Source/Engine/Networking/NetworkManager.cpp deleted file mode 100644 index 81d67ce0c..000000000 --- a/Source/Engine/Networking/NetworkManager.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. - -#include "NetworkManager.h" - -#include "NetworkMessage.h" -#include "NetworkConfig.h" -#include "NetworkPeer.h" - -#include "Engine/Core/Log.h" -#include "Engine/Core/Collections/Array.h" - -namespace -{ - Array Peers; - uint32_t LastHostId = 0; -} - -NetworkPeer* NetworkManager::CreatePeer(const NetworkConfig& config) -{ - // Validate the address for listen/connect - NetworkEndPoint endPoint = {}; - const bool isValidEndPoint = NetworkBase::CreateEndPoint(config.Address, String("7777"), NetworkIPVersion::IPv4, endPoint, false); - ASSERT(config.Address == String("any") || isValidEndPoint); - - // Alloc new host - Peers.Add(New()); - NetworkPeer* host = Peers.Last(); - host->HostId = LastHostId++; - - // Initialize the host - host->Initialize(config); - - return host; -} - -void NetworkManager::ShutdownPeer(NetworkPeer* peer) -{ - ASSERT(peer->IsValid()); - peer->Shutdown(); - peer->HostId = -1; - Peers.Remove(peer); - - Delete(peer); -} diff --git a/Source/Engine/Networking/NetworkManager.h b/Source/Engine/Networking/NetworkManager.h deleted file mode 100644 index 114dc4182..000000000 --- a/Source/Engine/Networking/NetworkManager.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. - -#pragma once - -#include "Engine/Scripting/ScriptingType.h" -#include "Types.h" - -/// -/// Low-level network service. Provides network peer management functionality. -/// -API_CLASS(Namespace="FlaxEngine.Networking", Static) class FLAXENGINE_API NetworkManager -{ -DECLARE_SCRIPTING_TYPE_NO_SPAWN(NetworkManager); -public: - /// - /// Creates new peer using given configuration. - /// - /// The configuration to create and setup new peer. - /// The peer. - /// Peer should be destroyed using once it is no longer in use. - API_FUNCTION() - static NetworkPeer* CreatePeer(const NetworkConfig& config); - - /// - /// Shutdowns and destroys given peer. - /// - /// The peer to destroy. - API_FUNCTION() - static void ShutdownPeer(NetworkPeer* peer); - -}; diff --git a/Source/Engine/Networking/NetworkPeer.cpp b/Source/Engine/Networking/NetworkPeer.cpp index 6f73b5ecb..407650dc1 100644 --- a/Source/Engine/Networking/NetworkPeer.cpp +++ b/Source/Engine/Networking/NetworkPeer.cpp @@ -9,6 +9,12 @@ #include "Engine/Core/Math/Math.h" #include "Engine/Platform/CPUInfo.h" +namespace +{ + Array Peers; + uint32_t LastHostId = 0; +} + void NetworkPeer::Initialize(const NetworkConfig& config) { Config = config; @@ -156,3 +162,31 @@ bool NetworkPeer::EndSendMessage(const NetworkChannelType channelType, const Net RecycleMessage(message); return false; } + +NetworkPeer* NetworkPeer::CreatePeer(const NetworkConfig& config) +{ + // Validate the address for listen/connect + NetworkEndPoint endPoint = {}; + const bool isValidEndPoint = NetworkBase::CreateEndPoint(config.Address, String("7777"), NetworkIPVersion::IPv4, endPoint, false); + ASSERT(config.Address == String("any") || isValidEndPoint); + + // Alloc new host + Peers.Add(New()); + NetworkPeer* host = Peers.Last(); + host->HostId = LastHostId++; + + // Initialize the host + host->Initialize(config); + + return host; +} + +void NetworkPeer::ShutdownPeer(NetworkPeer* peer) +{ + ASSERT(peer->IsValid()); + peer->Shutdown(); + peer->HostId = -1; + Peers.Remove(peer); + + Delete(peer); +} diff --git a/Source/Engine/Networking/NetworkPeer.h b/Source/Engine/Networking/NetworkPeer.h index fc8f0c8b2..4bb684be4 100644 --- a/Source/Engine/Networking/NetworkPeer.h +++ b/Source/Engine/Networking/NetworkPeer.h @@ -14,7 +14,7 @@ /// API_CLASS(sealed, NoSpawn, Namespace = "FlaxEngine.Networking") class FLAXENGINE_API NetworkPeer final : public PersistentScriptingObject { -DECLARE_SCRIPTING_TYPE_NO_SPAWN(NetworkHost); +DECLARE_SCRIPTING_TYPE_NO_SPAWN(NetworkPeer); friend class NetworkManager; public: int HostId = -1; @@ -150,6 +150,23 @@ public: /// API_FUNCTION() bool EndSendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array targets); + +public: + /// + /// Creates new peer using given configuration. + /// + /// The configuration to create and setup new peer. + /// The peer. + /// Peer should be destroyed using once it is no longer in use. + API_FUNCTION() + static NetworkPeer* CreatePeer(const NetworkConfig& config); + + /// + /// Shutdowns and destroys given peer. + /// + /// The peer to destroy. + API_FUNCTION() + static void ShutdownPeer(NetworkPeer* peer); public: bool IsValid() const