From c87feb69c4796e15603541242026f342b1176cea Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Mon, 8 Mar 2021 00:18:13 +0100 Subject: [PATCH] Add INetworDriver full API --- Source/Engine/Networking/INetworkDriver.h | 14 ++++++++-- Source/Engine/Networking/NetworkManager.cpp | 30 ++++++++++++++++----- Source/Engine/Networking/NetworkManager.h | 1 + 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/Source/Engine/Networking/INetworkDriver.h b/Source/Engine/Networking/INetworkDriver.h index c40bb15d5..e5638c53e 100644 --- a/Source/Engine/Networking/INetworkDriver.h +++ b/Source/Engine/Networking/INetworkDriver.h @@ -8,6 +8,16 @@ public: virtual void Initialize(const NetworkConfig& config) = 0; virtual void Dispose() = 0; - virtual void Listen() = 0; - virtual void SendMessage(const NetworkMessage* message, void* targets) = 0; // TODO + virtual bool Listen() = 0; + virtual void Connect() = 0; + virtual void Disconnect() = 0; + virtual void Disconnect(const NetworkConnection& connection) = 0; + + virtual bool PopEvent(NetworkEvent* event); + + virtual void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array targets) = 0; + + // TODO: Stats API + // TODO: Simulation API + }; diff --git a/Source/Engine/Networking/NetworkManager.cpp b/Source/Engine/Networking/NetworkManager.cpp index e39dd9b0f..e9d619591 100644 --- a/Source/Engine/Networking/NetworkManager.cpp +++ b/Source/Engine/Networking/NetworkManager.cpp @@ -54,36 +54,54 @@ void NetworkManager::Shutdown() bool NetworkManager::Listen() { - // TODO - return false; + ASSERT(NetworkDriver != nullptr); + return NetworkDriver->Listen(); } void NetworkManager::Connect() { - // TODO + ASSERT(NetworkDriver != nullptr); + // TODO: Assert address/endpoint + NetworkDriver->Connect(); } void NetworkManager::Disconnect() { - // TODO + ASSERT(NetworkDriver != nullptr); + NetworkDriver->Disconnect(); +} + +void NetworkManager::Disconnect(const NetworkConnection& connection) +{ + ASSERT(NetworkDriver != nullptr); + NetworkDriver->Disconnect(connection); +} + +bool NetworkManager::PopEvent(NetworkEvent* event) +{ + ASSERT(NetworkDriver != nullptr); + return NetworkDriver->PopEvent(event); } NetworkMessage NetworkManager::BeginSendMessage() { + ASSERT(NetworkDriver != nullptr); return CreateMessage(); } void NetworkManager::AbortSendMessage(const NetworkMessage& message) { + ASSERT(NetworkDriver != nullptr); ASSERT(message.IsValid()); RecycleMessage(message); } -bool NetworkManager::EndSendMessage(NetworkChannelType channelType, const NetworkMessage& message, Array targets) +bool NetworkManager::EndSendMessage(const NetworkChannelType channelType, const NetworkMessage& message, const Array targets) { + ASSERT(NetworkDriver != nullptr); ASSERT(message.IsValid()); - // TODO: Send message + NetworkDriver->SendMessage(channelType, message, targets); RecycleMessage(message); return false; diff --git a/Source/Engine/Networking/NetworkManager.h b/Source/Engine/Networking/NetworkManager.h index 24bf8ba40..dace276a8 100644 --- a/Source/Engine/Networking/NetworkManager.h +++ b/Source/Engine/Networking/NetworkManager.h @@ -16,6 +16,7 @@ public: API_FUNCTION() static bool Listen(); API_FUNCTION() static void Connect(); API_FUNCTION() static void Disconnect(); + API_FUNCTION() static void Disconnect(const NetworkConnection& connection); API_FUNCTION() static bool PopEvent(NetworkEvent* event);