From e717d294014a6978dcb0d959aa49edcc3f142ab5 Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Tue, 12 Oct 2021 18:18:57 +0200 Subject: [PATCH 1/4] Add NetworkDriver interface pointer to NetworkConfig --- Source/Engine/Networking/NetworkConfig.h | 9 ++++++++- Source/Engine/Networking/NetworkPeer.cpp | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Source/Engine/Networking/NetworkConfig.h b/Source/Engine/Networking/NetworkConfig.h index 8814759db..304ccef9d 100644 --- a/Source/Engine/Networking/NetworkConfig.h +++ b/Source/Engine/Networking/NetworkConfig.h @@ -4,6 +4,8 @@ #include "Engine/Platform/Network.h" +class PersistentScriptingObject; + /// /// Network driver implementations enum. /// @@ -33,7 +35,12 @@ public: /// API_FIELD() NetworkDriverType NetworkDriverType = NetworkDriverType::ENet; - // TODO: Expose INetworkDriver as a ref not enum, when C++/C# interfaces are done. + + /// + /// The network driver instance that will be used to create and manage the peer, send and receive messages. + /// + API_FIELD() + PersistentScriptingObject* NetworkDriver = nullptr; public: /// diff --git a/Source/Engine/Networking/NetworkPeer.cpp b/Source/Engine/Networking/NetworkPeer.cpp index 52bc72776..90a7967d6 100644 --- a/Source/Engine/Networking/NetworkPeer.cpp +++ b/Source/Engine/Networking/NetworkPeer.cpp @@ -20,7 +20,7 @@ void NetworkPeer::Initialize(const NetworkConfig& config) Config = config; ASSERT(NetworkDriver == nullptr); - ASSERT(Config.NetworkDriverType != NetworkDriverType::Undefined); + ASSERT(Config.NetworkDriver != nullptr); ASSERT(Config.ConnectionsLimit > 0); ASSERT(Config.MessageSize > 32); // TODO: Adjust this, not sure what the lowest limit should be. ASSERT(Config.MessagePoolSize > 128); @@ -35,7 +35,7 @@ void NetworkPeer::Initialize(const NetworkConfig& config) MessagePool.Push(messageId); // Setup network driver - NetworkDriver = New(); + NetworkDriver = ToInterface(Config.NetworkDriver); NetworkDriver->Initialize(this, Config); LOG(Info, "NetworkManager initialized using driver = {0}", static_cast(Config.NetworkDriverType)); From 9763199dbb744e2eab9916d524411e5b7436f542 Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Tue, 12 Oct 2021 18:19:23 +0200 Subject: [PATCH 2/4] Add INetworkDriver::DriverName() function --- Source/Engine/Networking/Drivers/ENetDriver.h | 1 + Source/Engine/Networking/INetworkDriver.h | 9 +++++++++ Source/Engine/Networking/NetworkPeer.cpp | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Networking/Drivers/ENetDriver.h b/Source/Engine/Networking/Drivers/ENetDriver.h index e951b6fb2..97a1949f6 100644 --- a/Source/Engine/Networking/Drivers/ENetDriver.h +++ b/Source/Engine/Networking/Drivers/ENetDriver.h @@ -19,6 +19,7 @@ DECLARE_SCRIPTING_TYPE(ENetDriver); public: // [INetworkDriver] + String DriverName() override { return String("ENetDriver"); } void Initialize(NetworkPeer* host, const NetworkConfig& config) override; void Dispose() override; bool Listen() override; diff --git a/Source/Engine/Networking/INetworkDriver.h b/Source/Engine/Networking/INetworkDriver.h index 2908f0d5f..63ec64557 100644 --- a/Source/Engine/Networking/INetworkDriver.h +++ b/Source/Engine/Networking/INetworkDriver.h @@ -3,6 +3,7 @@ #pragma once #include "Types.h" +#include "Engine/Core/Types/String.h" #include "Engine/Scripting/ScriptingType.h" /// @@ -18,6 +19,14 @@ public: /// virtual ~INetworkDriver() = default; + /// + /// Return name of this network driver implementation. + /// + API_FUNCTION() virtual String DriverName() + { + return String("Unknown"); + } + /// /// Initializes the instance of this network driver using given configuration. /// diff --git a/Source/Engine/Networking/NetworkPeer.cpp b/Source/Engine/Networking/NetworkPeer.cpp index 90a7967d6..2e885e54d 100644 --- a/Source/Engine/Networking/NetworkPeer.cpp +++ b/Source/Engine/Networking/NetworkPeer.cpp @@ -23,7 +23,7 @@ void NetworkPeer::Initialize(const NetworkConfig& config) ASSERT(Config.NetworkDriver != nullptr); ASSERT(Config.ConnectionsLimit > 0); ASSERT(Config.MessageSize > 32); // TODO: Adjust this, not sure what the lowest limit should be. - ASSERT(Config.MessagePoolSize > 128); + ASSERT(Config.MessagePoolSize > 128); // TODO: Dynamic message pool allocation // Setup messages @@ -38,7 +38,7 @@ void NetworkPeer::Initialize(const NetworkConfig& config) NetworkDriver = ToInterface(Config.NetworkDriver); NetworkDriver->Initialize(this, Config); - LOG(Info, "NetworkManager initialized using driver = {0}", static_cast(Config.NetworkDriverType)); + LOG(Info, "NetworkManager initialized using driver = {0}", NetworkDriver->DriverName()); } void NetworkPeer::Shutdown() From 41e4ce7b2e47cf8f278336683a815d1a45974f3b Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Thu, 14 Oct 2021 20:18:24 +0200 Subject: [PATCH 3/4] Add DEPRECATED attribute to NetworkConfig::NetworkDriverType --- Source/Engine/Networking/NetworkConfig.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Networking/NetworkConfig.h b/Source/Engine/Networking/NetworkConfig.h index 304ccef9d..43a4e7837 100644 --- a/Source/Engine/Networking/NetworkConfig.h +++ b/Source/Engine/Networking/NetworkConfig.h @@ -9,7 +9,7 @@ class PersistentScriptingObject; /// /// Network driver implementations enum. /// -API_ENUM(Namespace="FlaxEngine.Networking") enum class NetworkDriverType +API_ENUM(Namespace="FlaxEngine.Networking") DEPRECATED enum class NetworkDriverType { /// /// Invalid network driver implementation. @@ -34,7 +34,7 @@ public: /// To allow two peers to connect, they must use the same host. /// API_FIELD() - NetworkDriverType NetworkDriverType = NetworkDriverType::ENet; + DEPRECATED NetworkDriverType NetworkDriverType = NetworkDriverType::ENet; /// /// The network driver instance that will be used to create and manage the peer, send and receive messages. From 2f6dee973585dc1e6156bbf2143f91227de09b8e Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Thu, 14 Oct 2021 20:52:13 +0200 Subject: [PATCH 4/4] Fix build errror --- Source/Engine/Networking/NetworkConfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Engine/Networking/NetworkConfig.h b/Source/Engine/Networking/NetworkConfig.h index 43a4e7837..31f6a5d6f 100644 --- a/Source/Engine/Networking/NetworkConfig.h +++ b/Source/Engine/Networking/NetworkConfig.h @@ -9,7 +9,7 @@ class PersistentScriptingObject; /// /// Network driver implementations enum. /// -API_ENUM(Namespace="FlaxEngine.Networking") DEPRECATED enum class NetworkDriverType +API_ENUM(Namespace="FlaxEngine.Networking") enum class DEPRECATED NetworkDriverType { /// /// Invalid network driver implementation.