From 7525bf64353135ea9de86c81637432a55202c35e Mon Sep 17 00:00:00 2001 From: Damian Korczowski Date: Sun, 7 Mar 2021 23:54:28 +0100 Subject: [PATCH] Add network message recycle implementation --- Source/Engine/Networking/NetworkManager.cpp | 8 +++++++- Source/Engine/Networking/NetworkMessage.h | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Engine/Networking/NetworkManager.cpp b/Source/Engine/Networking/NetworkManager.cpp index 6a18bf749..268476452 100644 --- a/Source/Engine/Networking/NetworkManager.cpp +++ b/Source/Engine/Networking/NetworkManager.cpp @@ -96,12 +96,18 @@ NetworkMessage NetworkManager::CreateMessage() const uint32 messageId = MessagePool.Pop(); uint8* messageBuffer = GetMessageBuffer(messageId); - return NetworkMessage { messageBuffer, Config.MessageSize, 0, 0 }; + return NetworkMessage { messageBuffer, messageId, Config.MessageSize, 0, 0 }; } void NetworkManager::RecycleMessage(const NetworkMessage& message) { ASSERT(message.IsValid()); +#ifdef BUILD_DEBUG + ASSERT(MessagePool.Contains(message.MessageId) == false); +#endif + + // Return the message id + MessagePool.Push(message.MessageId); } void NetworkManager::CreateMessageBuffers() diff --git a/Source/Engine/Networking/NetworkMessage.h b/Source/Engine/Networking/NetworkMessage.h index cd55e9cbe..ec6a363bb 100644 --- a/Source/Engine/Networking/NetworkMessage.h +++ b/Source/Engine/Networking/NetworkMessage.h @@ -10,6 +10,9 @@ public: API_FIELD() uint8* Buffer; + API_FIELD() + uint32 MessageId; // TODO: Make it read-only + API_FIELD() uint32 BufferSize;