From 3c02ea2a8cf60ffe2b1b45f18a99118598f317f7 Mon Sep 17 00:00:00 2001 From: Benoit Doyon Date: Wed, 2 Jun 2021 09:31:39 -0400 Subject: [PATCH 1/6] Move profiling for the message handler to a decorator --- .../Runtime/Core/NetworkManager.cs | 7 +- .../Messaging/InternalMessageHandler.cs | 142 ------------ ...nternalMessageHandlerProfilingDecorator.cs | 210 ++++++++++++++++++ ...alMessageHandlerProfilingDecorator.cs.meta | 11 + .../Tests/Editor/DummyMessageHandler.cs | 52 +++++ .../Tests/Editor/DummyMessageHandler.cs.meta | 11 + .../NetworkManagerMessageHandlerTests.cs | 89 ++------ .../Tests/Editor/Profiling.meta | 8 + ...alMessageHandlerProfilingDecoratorTests.cs | 155 +++++++++++++ ...sageHandlerProfilingDecoratorTests.cs.meta | 11 + 10 files changed, 485 insertions(+), 211 deletions(-) create mode 100644 com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs create mode 100644 com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs.meta create mode 100644 com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs create mode 100644 com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs.meta create mode 100644 com.unity.multiplayer.mlapi/Tests/Editor/Profiling.meta create mode 100644 com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs create mode 100644 com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 0eac75309d..caa0fbf9af 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -345,8 +345,13 @@ private void Init(bool server) if (MessageHandler == null) { + IInternalMessageHandler messageHandler = new InternalMessageHandler(this); + +#if DEVELOPMENT_BUILD || UNITY_EDITOR + messageHandler = new InternalMessageHandlerProfilingDecorator(messageHandler); +#endif // Only create this if it's not already set (like in test cases) - MessageHandler = new InternalMessageHandler(this); + MessageHandler = messageHandler; } MessageSender = new InternalMessageSender(this); diff --git a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs index 8dccf5bc95..51b717fc69 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs @@ -4,7 +4,6 @@ using MLAPI.Logging; using MLAPI.SceneManagement; using MLAPI.Serialization.Pooled; -using MLAPI.Spawning; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; @@ -13,32 +12,11 @@ using MLAPI.Messaging.Buffering; using MLAPI.Profiling; using MLAPI.Serialization; -using Unity.Profiling; namespace MLAPI.Messaging { internal class InternalMessageHandler : IInternalMessageHandler { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - private static ProfilerMarker s_HandleConnectionRequest = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionRequest)}"); - private static ProfilerMarker s_HandleConnectionApproved = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionApproved)}"); - private static ProfilerMarker s_HandleAddObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObject)}"); - private static ProfilerMarker s_HandleDestroyObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObject)}"); - private static ProfilerMarker s_HandleSwitchScene = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleSwitchScene)}"); - private static ProfilerMarker s_HandleClientSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleClientSwitchSceneCompleted)}"); - private static ProfilerMarker s_HandleChangeOwner = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleChangeOwner)}"); - private static ProfilerMarker s_HandleAddObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObjects)}"); - private static ProfilerMarker s_HandleDestroyObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObjects)}"); - private static ProfilerMarker s_HandleTimeSync = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleTimeSync)}"); - private static ProfilerMarker s_HandleNetworkVariableDelta = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableDelta)}"); - private static ProfilerMarker s_HandleNetworkVariableUpdate = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableUpdate)}"); - private static ProfilerMarker s_HandleUnnamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleUnnamedMessage)}"); - private static ProfilerMarker s_HandleNamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNamedMessage)}"); - private static ProfilerMarker s_HandleNetworkLog = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkLog)}"); - private static ProfilerMarker s_RpcReceiveQueueItemServerRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ServerRpc)}"); - private static ProfilerMarker s_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); - private static ProfilerMarker s_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); -#endif public NetworkManager NetworkManager => m_NetworkManager; private NetworkManager m_NetworkManager; @@ -50,9 +28,6 @@ public InternalMessageHandler(NetworkManager networkManager) public void HandleConnectionRequest(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleConnectionRequest.Begin(); -#endif if (NetworkManager.PendingClients.TryGetValue(clientId, out PendingClient client)) { // Set to pending approval to prevent future connection requests from being approved @@ -85,16 +60,10 @@ public void HandleConnectionRequest(ulong clientId, Stream stream) NetworkManager.HandleApproval(clientId, NetworkManager.NetworkConfig.PlayerPrefab != null, null, true, null, null); } } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleConnectionRequest.End(); -#endif } public void HandleConnectionApproved(ulong clientId, Stream stream, float receiveTime) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleConnectionApproved.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { NetworkManager.LocalClientId = reader.ReadUInt64Packed(); @@ -165,16 +134,10 @@ void OnSceneLoadComplete() DelayedSpawnAction(stream); } } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleConnectionApproved.End(); -#endif } public void HandleAddObject(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleAddObject.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { var isPlayerObject = reader.ReadBool(); @@ -218,31 +181,19 @@ public void HandleAddObject(ulong clientId, Stream stream) } } } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleAddObject.End(); -#endif } public void HandleDestroyObject(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleDestroyObject.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { ulong networkId = reader.ReadUInt64Packed(); NetworkManager.SpawnManager.OnDestroyObject(networkId, true); } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleDestroyObject.End(); -#endif } public void HandleSwitchScene(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleSwitchScene.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { uint sceneIndex = reader.ReadUInt32Packed(); @@ -254,30 +205,18 @@ public void HandleSwitchScene(ulong clientId, Stream stream) m_NetworkManager.SceneManager.OnSceneSwitch(sceneIndex, switchSceneGuid, objectBuffer); } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleSwitchScene.End(); -#endif } public void HandleClientSwitchSceneCompleted(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleClientSwitchSceneCompleted.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { m_NetworkManager.SceneManager.OnClientSwitchSceneCompleted(clientId, new Guid(reader.ReadByteArray())); } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleClientSwitchSceneCompleted.End(); -#endif } public void HandleChangeOwner(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleChangeOwner.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { ulong networkId = reader.ReadUInt64Packed(); @@ -297,16 +236,10 @@ public void HandleChangeOwner(ulong clientId, Stream stream) NetworkManager.SpawnManager.SpawnedObjects[networkId].OwnerClientId = ownerClientId; } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleChangeOwner.End(); -#endif } public void HandleAddObjects(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleAddObjects.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { ushort objectCount = reader.ReadUInt16Packed(); @@ -316,16 +249,10 @@ public void HandleAddObjects(ulong clientId, Stream stream) HandleAddObject(clientId, stream); } } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleAddObjects.End(); -#endif } public void HandleDestroyObjects(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleDestroyObjects.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { ushort objectCount = reader.ReadUInt16Packed(); @@ -335,31 +262,19 @@ public void HandleDestroyObjects(ulong clientId, Stream stream) HandleDestroyObject(clientId, stream); } } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleDestroyObjects.End(); -#endif } public void HandleTimeSync(ulong clientId, Stream stream, float receiveTime) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleTimeSync.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { float netTime = reader.ReadSinglePacked(); NetworkManager.UpdateNetworkTime(clientId, netTime, receiveTime); } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleTimeSync.End(); -#endif } public void HandleNetworkVariableDelta(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleNetworkVariableDelta.Begin(); -#endif if (!NetworkManager.NetworkConfig.EnableNetworkVariable) { if (NetworkLog.CurrentLogLevel <= LogLevel.Normal) @@ -408,16 +323,10 @@ public void HandleNetworkVariableDelta(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleNetworkVariableUpdate.Begin(); -#endif if (!NetworkManager.NetworkConfig.EnableNetworkVariable) { if (NetworkLog.CurrentLogLevel <= LogLevel.Normal) @@ -466,9 +375,6 @@ public void HandleNetworkVariableUpdate(ulong clientId, Stream stream, Action
    @@ -487,70 +393,31 @@ public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime ProfilerStatManager.RpcsRcvd.Record(); PerformanceDataManager.Increment(ProfilerConstants.RpcReceived); -#if DEVELOPMENT_BUILD || UNITY_EDITOR - switch (queueItemType) - { - case RpcQueueContainer.QueueItemType.ServerRpc: - s_RpcReceiveQueueItemServerRpc.Begin(); - break; - case RpcQueueContainer.QueueItemType.ClientRpc: - s_RpcReceiveQueueItemClientRpc.Begin(); - break; - } -#endif - var rpcQueueContainer = NetworkManager.RpcQueueContainer; rpcQueueContainer.AddQueueItemToInboundFrame(queueItemType, receiveTime, clientId, (NetworkBuffer)stream); - -#if DEVELOPMENT_BUILD || UNITY_EDITOR - switch (queueItemType) - { - case RpcQueueContainer.QueueItemType.ServerRpc: - s_RpcReceiveQueueItemServerRpc.End(); - break; - case RpcQueueContainer.QueueItemType.ClientRpc: - s_RpcReceiveQueueItemClientRpc.End(); - break; - } -#endif } public void HandleUnnamedMessage(ulong clientId, Stream stream) { PerformanceDataManager.Increment(ProfilerConstants.UnnamedMessageReceived); ProfilerStatManager.UnnamedMessage.Record(); -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleUnnamedMessage.Begin(); -#endif NetworkManager.CustomMessagingManager.InvokeUnnamedMessage(clientId, stream); -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleUnnamedMessage.End(); -#endif } public void HandleNamedMessage(ulong clientId, Stream stream) { PerformanceDataManager.Increment(ProfilerConstants.NamedMessageReceived); ProfilerStatManager.NamedMessage.Record(); -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleNamedMessage.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { ulong hash = reader.ReadUInt64Packed(); NetworkManager.CustomMessagingManager.InvokeNamedMessage(hash, clientId, stream); } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleNamedMessage.End(); -#endif } public void HandleNetworkLog(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleNetworkLog.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { var logType = (NetworkLog.LogType)reader.ReadByte(); @@ -569,9 +436,6 @@ public void HandleNetworkLog(ulong clientId, Stream stream) break; } } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleNetworkLog.End(); -#endif } internal static void HandleSnapshot(ulong clientId, Stream messageStream) @@ -581,18 +445,12 @@ internal static void HandleSnapshot(ulong clientId, Stream messageStream) public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) { -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleAllClientsSwitchSceneCompleted.Begin(); -#endif using (var reader = PooledNetworkReader.Get(stream)) { var clientIds = reader.ReadULongArray(); var timedOutClientIds = reader.ReadULongArray(); NetworkManager.SceneManager.AllClientsReady(clientIds, timedOutClientIds); } -#if DEVELOPMENT_BUILD || UNITY_EDITOR - s_HandleAllClientsSwitchSceneCompleted.End(); -#endif } } } diff --git a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs new file mode 100644 index 0000000000..647c6fd38d --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs @@ -0,0 +1,210 @@ +using System; +using System.IO; +using MLAPI.Messaging; +using MLAPI.Messaging.Buffering; +using Unity.Profiling; + +namespace MLAPI.Profiling +{ +#if DEVELOPMENT_BUILD || UNITY_EDITOR + internal class InternalMessageHandlerProfilingDecorator : IInternalMessageHandler + { + static readonly ProfilerMarker s_HandleConnectionRequest = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionRequest)}"); + static readonly ProfilerMarker s_HandleConnectionApproved = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionApproved)}"); + static readonly ProfilerMarker s_HandleAddObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObject)}"); + static readonly ProfilerMarker s_HandleDestroyObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObject)}"); + static readonly ProfilerMarker s_HandleSwitchScene = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleSwitchScene)}"); + static readonly ProfilerMarker s_HandleClientSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleClientSwitchSceneCompleted)}"); + static readonly ProfilerMarker s_HandleChangeOwner = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleChangeOwner)}"); + static readonly ProfilerMarker s_HandleAddObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObjects)}"); + static readonly ProfilerMarker s_HandleDestroyObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObjects)}"); + static readonly ProfilerMarker s_HandleTimeSync = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleTimeSync)}"); + static readonly ProfilerMarker s_HandleNetworkVariableDelta = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableDelta)}"); + static readonly ProfilerMarker s_HandleNetworkVariableUpdate = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableUpdate)}"); + static readonly ProfilerMarker s_HandleUnnamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleUnnamedMessage)}"); + static readonly ProfilerMarker s_HandleNamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNamedMessage)}"); + static readonly ProfilerMarker s_HandleNetworkLog = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkLog)}"); + static readonly ProfilerMarker s_RpcReceiveQueueItemServerRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ServerRpc)}"); + static readonly ProfilerMarker s_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); + static readonly ProfilerMarker s_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); + + readonly IInternalMessageHandler m_MessageHandler; + + internal InternalMessageHandlerProfilingDecorator(IInternalMessageHandler messageHandler) + { + m_MessageHandler = messageHandler; + } + + public NetworkManager NetworkManager => m_MessageHandler.NetworkManager; + + public void HandleConnectionRequest(ulong clientId, Stream stream) + { + s_HandleConnectionRequest.Begin(); + + m_MessageHandler.HandleConnectionRequest(clientId, stream); + + s_HandleConnectionRequest.End(); + } + + public void HandleConnectionApproved(ulong clientId, Stream stream, float receiveTime) + { + s_HandleConnectionApproved.Begin(); + + m_MessageHandler.HandleConnectionApproved(clientId, stream, receiveTime); + + s_HandleConnectionApproved.End(); + } + + public void HandleAddObject(ulong clientId, Stream stream) + { + s_HandleAddObject.Begin(); + + m_MessageHandler.HandleAddObject(clientId, stream); + + s_HandleAddObject.End(); + } + + public void HandleDestroyObject(ulong clientId, Stream stream) + { + s_HandleDestroyObject.Begin(); + + m_MessageHandler.HandleDestroyObject(clientId, stream); + + s_HandleDestroyObject.End(); + } + + public void HandleSwitchScene(ulong clientId, Stream stream) + { + s_HandleSwitchScene.Begin(); + + m_MessageHandler.HandleSwitchScene(clientId, stream); + + s_HandleSwitchScene.End(); + } + + public void HandleClientSwitchSceneCompleted(ulong clientId, Stream stream) + { + s_HandleClientSwitchSceneCompleted.Begin(); + + m_MessageHandler.HandleClientSwitchSceneCompleted(clientId, stream); + + s_HandleClientSwitchSceneCompleted.End(); + } + + public void HandleChangeOwner(ulong clientId, Stream stream) + { + s_HandleChangeOwner.Begin(); + + m_MessageHandler.HandleChangeOwner(clientId, stream); + + s_HandleChangeOwner.End(); + } + + public void HandleAddObjects(ulong clientId, Stream stream) + { + s_HandleAddObjects.Begin(); + + m_MessageHandler.HandleAddObjects(clientId, stream); + + s_HandleAddObjects.End(); + } + + public void HandleDestroyObjects(ulong clientId, Stream stream) + { + s_HandleDestroyObjects.Begin(); + + m_MessageHandler.HandleDestroyObjects(clientId, stream); + + s_HandleDestroyObjects.End(); + } + + public void HandleTimeSync(ulong clientId, Stream stream, float receiveTime) + { + s_HandleTimeSync.Begin(); + + m_MessageHandler.HandleTimeSync(clientId, stream, receiveTime); + + s_HandleTimeSync.End(); + } + + public void HandleNetworkVariableDelta(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) + { + s_HandleNetworkVariableDelta.Begin(); + + m_MessageHandler.HandleNetworkVariableDelta(clientId, stream, bufferCallback, bufferPreset); + + s_HandleNetworkVariableDelta.End(); + } + + public void HandleNetworkVariableUpdate(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) + { + s_HandleNetworkVariableUpdate.Begin(); + + m_MessageHandler.HandleNetworkVariableUpdate(clientId, stream, bufferCallback, bufferPreset); + + s_HandleNetworkVariableUpdate.End(); + } + + public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime, RpcQueueContainer.QueueItemType queueItemType) + { + switch (queueItemType) + { + case RpcQueueContainer.QueueItemType.ServerRpc: + s_RpcReceiveQueueItemServerRpc.Begin(); + break; + case RpcQueueContainer.QueueItemType.ClientRpc: + s_RpcReceiveQueueItemClientRpc.Begin(); + break; + } + + m_MessageHandler.RpcReceiveQueueItem(clientId, stream, receiveTime, queueItemType); + + switch (queueItemType) + { + case RpcQueueContainer.QueueItemType.ServerRpc: + s_RpcReceiveQueueItemServerRpc.End(); + break; + case RpcQueueContainer.QueueItemType.ClientRpc: + s_RpcReceiveQueueItemClientRpc.End(); + break; + } + } + + public void HandleUnnamedMessage(ulong clientId, Stream stream) + { + s_HandleUnnamedMessage.Begin(); + + m_MessageHandler.HandleUnnamedMessage(clientId, stream); + + s_HandleUnnamedMessage.End(); + } + + public void HandleNamedMessage(ulong clientId, Stream stream) + { + s_HandleNamedMessage.Begin(); + + m_MessageHandler.HandleNamedMessage(clientId, stream); + + s_HandleNamedMessage.End(); + } + + public void HandleNetworkLog(ulong clientId, Stream stream) + { + s_HandleNetworkLog.Begin(); + + m_MessageHandler.HandleNetworkLog(clientId, stream); + + s_HandleNetworkLog.End(); + } + + public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) + { + s_HandleAllClientsSwitchSceneCompleted.Begin(); + + m_MessageHandler.HandleAllClientsSwitchSceneCompleted(clientId, stream); + + s_HandleAllClientsSwitchSceneCompleted.End(); + } + } +#endif +} \ No newline at end of file diff --git a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs.meta b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs.meta new file mode 100644 index 0000000000..3eff6cb487 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8f43d517df0d304cbdba69447759009 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs b/com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs new file mode 100644 index 0000000000..54f9d94f22 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs @@ -0,0 +1,52 @@ +using System; +using System.IO; +using MLAPI.Messaging; +using MLAPI.Messaging.Buffering; +using UnityEngine; + +namespace MLAPI.EditorTests +{ + internal class DummyMessageHandler : IInternalMessageHandler + { + public NetworkManager NetworkManager { get; } + + public void HandleConnectionRequest(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleConnectionRequest)); + + public void HandleConnectionApproved(ulong clientId, Stream stream, float receiveTime) => VerifyCalled(nameof(HandleConnectionApproved)); + + public void HandleAddObject(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAddObject)); + + public void HandleDestroyObject(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleDestroyObject)); + + public void HandleSwitchScene(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleSwitchScene)); + + public void HandleClientSwitchSceneCompleted(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleClientSwitchSceneCompleted)); + + public void HandleChangeOwner(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleChangeOwner)); + + public void HandleAddObjects(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAddObjects)); + + public void HandleDestroyObjects(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleDestroyObjects)); + + public void HandleTimeSync(ulong clientId, Stream stream, float receiveTime) => VerifyCalled(nameof(HandleTimeSync)); + + public void HandleNetworkVariableDelta(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) => VerifyCalled(nameof(HandleNetworkVariableDelta)); + + public void HandleNetworkVariableUpdate(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) => VerifyCalled(nameof(HandleNetworkVariableUpdate)); + + public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime, RpcQueueContainer.QueueItemType queueItemType) => VerifyCalled(nameof(RpcReceiveQueueItem)); + + public void HandleUnnamedMessage(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleUnnamedMessage)); + + public void HandleNamedMessage(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleNamedMessage)); + + public void HandleNetworkLog(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleNetworkLog)); + + public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAllClientsSwitchSceneCompleted)); + + private void VerifyCalled(string method) + { + Debug.Log(method); + } + } +} \ No newline at end of file diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs.meta b/com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs.meta new file mode 100644 index 0000000000..384300ede4 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Editor/DummyMessageHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a90aa73e34ca0b4f9a5f4e3e593c6f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/NetworkManagerMessageHandlerTests.cs b/com.unity.multiplayer.mlapi/Tests/Editor/NetworkManagerMessageHandlerTests.cs index 96759aefa3..2d278e72df 100644 --- a/com.unity.multiplayer.mlapi/Tests/Editor/NetworkManagerMessageHandlerTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Editor/NetworkManagerMessageHandlerTests.cs @@ -1,11 +1,8 @@ using System; using System.Collections.Generic; -using System.IO; using MLAPI.Configuration; using MLAPI.Editor; using MLAPI.Internal; -using MLAPI.Messaging; -using MLAPI.Messaging.Buffering; using MLAPI.Serialization; using MLAPI.Transports; using MLAPI.Transports.Tasks; @@ -50,7 +47,7 @@ public void MessageHandlerReceivedMessageServerClient() networkManager.RpcQueueContainer.EnableBatchedRpcs(false); // Should cause log (server only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleConnectionRequest)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleConnectionRequest)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.CONNECTION_REQUEST, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); @@ -105,49 +102,49 @@ public void MessageHandlerReceivedMessageServerClient() } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNetworkVariableDelta)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNetworkVariableDelta)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.NETWORK_VARIABLE_DELTA, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNetworkVariableUpdate)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNetworkVariableUpdate)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.NETWORK_VARIABLE_UPDATE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleUnnamedMessage)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleUnnamedMessage)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.UNNAMED_MESSAGE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNamedMessage)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNamedMessage)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.NAMED_MESSAGE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleClientSwitchSceneCompleted)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleClientSwitchSceneCompleted)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.CLIENT_SWITCH_SCENE_COMPLETED, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNetworkLog)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNetworkLog)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.SERVER_LOG, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.RpcReceiveQueueItem)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.RpcReceiveQueueItem)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.SERVER_RPC, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); @@ -179,84 +176,84 @@ public void MessageHandlerReceivedMessageServerClient() } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleConnectionApproved)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleConnectionApproved)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.CONNECTION_APPROVED, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleAddObject)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleAddObject)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.ADD_OBJECT, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleDestroyObject)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleDestroyObject)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.DESTROY_OBJECT, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleSwitchScene)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleSwitchScene)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.SWITCH_SCENE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleChangeOwner)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleChangeOwner)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.CHANGE_OWNER, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleAddObjects)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleAddObjects)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.ADD_OBJECTS, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleDestroyObjects)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleDestroyObjects)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.DESTROY_OBJECTS, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleTimeSync)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleTimeSync)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.TIME_SYNC, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNetworkVariableDelta)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNetworkVariableDelta)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.NETWORK_VARIABLE_DELTA, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNetworkVariableUpdate)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNetworkVariableUpdate)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.NETWORK_VARIABLE_UPDATE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleUnnamedMessage)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleUnnamedMessage)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.UNNAMED_MESSAGE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); } // Should cause log (server and client) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.HandleNamedMessage)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.HandleNamedMessage)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.NAMED_MESSAGE, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); @@ -281,7 +278,7 @@ public void MessageHandlerReceivedMessageServerClient() } // Should cause log (client only) - LogAssert.Expect(LogType.Log, nameof(MessageHandlerReceivedMessageServerClient) + " " + nameof(DummyMessageHandler.RpcReceiveQueueItem)); + LogAssert.Expect(LogType.Log, nameof(DummyMessageHandler.RpcReceiveQueueItem)); using (var messageStream = MessagePacker.WrapMessage(NetworkConstants.CLIENT_RPC, inputBuffer)) { networkManager.HandleIncomingData(0, NetworkChannel.Internal, new ArraySegment(messageStream.GetBuffer(), 0, (int)messageStream.Length), 0, true); @@ -299,50 +296,6 @@ public void MessageHandlerReceivedMessageServerClient() } } - internal class DummyMessageHandler : IInternalMessageHandler - { - public NetworkManager NetworkManager { get; } - - public void HandleConnectionRequest(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleConnectionRequest)); - - public void HandleConnectionApproved(ulong clientId, Stream stream, float receiveTime) => VerifyCalled(nameof(HandleConnectionApproved)); - - public void HandleAddObject(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAddObject)); - - public void HandleDestroyObject(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleDestroyObject)); - - public void HandleSwitchScene(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleSwitchScene)); - - public void HandleClientSwitchSceneCompleted(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleClientSwitchSceneCompleted)); - - public void HandleChangeOwner(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleChangeOwner)); - - public void HandleAddObjects(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAddObjects)); - - public void HandleDestroyObjects(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleDestroyObjects)); - - public void HandleTimeSync(ulong clientId, Stream stream, float receiveTime) => VerifyCalled(nameof(HandleTimeSync)); - - public void HandleNetworkVariableDelta(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) => VerifyCalled(nameof(HandleNetworkVariableDelta)); - - public void HandleNetworkVariableUpdate(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) => VerifyCalled(nameof(HandleNetworkVariableUpdate)); - - public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime, RpcQueueContainer.QueueItemType queueItemType) => VerifyCalled(nameof(RpcReceiveQueueItem)); - - public void HandleUnnamedMessage(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleUnnamedMessage)); - - public void HandleNamedMessage(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleNamedMessage)); - - public void HandleNetworkLog(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleNetworkLog)); - - public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAllClientsSwitchSceneCompleted)); - - private void VerifyCalled(string method) - { - Debug.Log(nameof(NetworkManagerMessageHandlerTests.MessageHandlerReceivedMessageServerClient) + " " + method); - } - } - // Should probably have one of these for more files? In the future we could use the SIPTransport? [DontShowInTransportDropdown] internal class DummyTransport : NetworkTransport diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/Profiling.meta b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling.meta new file mode 100644 index 0000000000..933cfaf938 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30b2fb9742b202343a827caae5ff5bb2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs new file mode 100644 index 0000000000..ead7df0c0b --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs @@ -0,0 +1,155 @@ +using MLAPI.Messaging; +using MLAPI.Profiling; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.TestTools; + +namespace MLAPI.EditorTests.Profiling +{ + public class InternalMessageHandlerProfilingDecoratorTests + { + InternalMessageHandlerProfilingDecorator m_Decorator; + + [SetUp] + public void Setup() + { + m_Decorator = new InternalMessageHandlerProfilingDecorator(new DummyMessageHandler()); + } + + [Test] + public void HandleConnectionRequestCallsUnderlyingHandler() + { + m_Decorator.HandleConnectionRequest(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleConnectionRequest)); + } + + [Test] + public void HandleConnectionApprovedCallsUnderlyingHandler() + { + m_Decorator.HandleConnectionApproved(0, null, 0.0f); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleConnectionApproved)); + } + + [Test] + public void HandleAddObjectCallsUnderlyingHandler() + { + m_Decorator.HandleAddObject(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleAddObject)); + } + + [Test] + public void HandleDestroyObjectCallsUnderlyingHandler() + { + m_Decorator.HandleDestroyObject(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleDestroyObject)); + } + + [Test] + public void HandleSwitchSceneCallsUnderlyingHandler() + { + m_Decorator.HandleSwitchScene(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleSwitchScene)); + } + + [Test] + public void HandleClientSwitchSceneCompletedCallsUnderlyingHandler() + { + m_Decorator.HandleClientSwitchSceneCompleted(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleClientSwitchSceneCompleted)); + } + + [Test] + public void HandleChangeOwnerCallsUnderlyingHandler() + { + m_Decorator.HandleChangeOwner(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleChangeOwner)); + } + + [Test] + public void HandleAddObjectsCallsUnderlyingHandler() + { + m_Decorator.HandleAddObjects(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleAddObjects)); + } + + [Test] + public void HandleDestroyObjectsCallsUnderlyingHandler() + { + m_Decorator.HandleDestroyObjects(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleDestroyObjects)); + } + + [Test] + public void HandleTimeSyncCallsUnderlyingHandler() + { + m_Decorator.HandleTimeSync(0, null, 0.0f); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleTimeSync)); + } + + [Test] + public void HandleNetworkVariableDeltaCallsUnderlyingHandler() + { + m_Decorator.HandleNetworkVariableDelta(0, null, null, default); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleNetworkVariableDelta)); + } + + [Test] + public void HandleNetworkVariableUpdateCallsUnderlyingHandler() + { + m_Decorator.HandleNetworkVariableUpdate(0, null, null, default); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleNetworkVariableUpdate)); + } + + [Test] + public void HandleUnnamedMessageCallsUnderlyingHandler() + { + m_Decorator.HandleUnnamedMessage(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleUnnamedMessage)); + } + + [Test] + public void HandleNamedMessageCallsUnderlyingHandler() + { + m_Decorator.HandleNamedMessage(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleNamedMessage)); + } + + [Test] + public void HandleNetworkLogCallsUnderlyingHandler() + { + m_Decorator.HandleNetworkLog(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleNetworkLog)); + } + + [Test] + public void RpcReceiveQueueItemCallsUnderlyingHandler() + { + m_Decorator.RpcReceiveQueueItem(0, null, 0.0f, RpcQueueContainer.QueueItemType.None); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.RpcReceiveQueueItem)); + } + + [Test] + public void HandleAllClientsSwitchSceneCompleted() + { + m_Decorator.HandleAllClientsSwitchSceneCompleted(0, null); + + LogAssert.Expect(LogType.Log, nameof(m_Decorator.HandleAllClientsSwitchSceneCompleted)); + } + } +} \ No newline at end of file diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs.meta b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs.meta new file mode 100644 index 0000000000..47c5f0cbc0 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3212378d267799e40a84b65d2ed9591a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From ea79a0f2b3882b3c77cee46f013b74fccc77902e Mon Sep 17 00:00:00 2001 From: Benoit Doyon Date: Wed, 2 Jun 2021 09:39:36 -0400 Subject: [PATCH 2/6] Fix whitespace --- .../Runtime/Messaging/InternalMessageHandler.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs index 51b717fc69..82b00d5168 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs @@ -17,7 +17,6 @@ namespace MLAPI.Messaging { internal class InternalMessageHandler : IInternalMessageHandler { - public NetworkManager NetworkManager => m_NetworkManager; private NetworkManager m_NetworkManager; From cc019fdcc7407a0e40024e72bd860e4ce19cbe45 Mon Sep 17 00:00:00 2001 From: Benoit Doyon Date: Thu, 3 Jun 2021 09:45:05 -0400 Subject: [PATCH 3/6] Code review fixes --- .../Runtime/Core/NetworkManager.cs | 23 ++-- ...nternalMessageHandlerProfilingDecorator.cs | 110 +++++++++--------- 2 files changed, 67 insertions(+), 66 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index caa0fbf9af..faf9f4dc4f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -343,16 +343,8 @@ private void Init(bool server) SceneManager = new NetworkSceneManager(this); - if (MessageHandler == null) - { - IInternalMessageHandler messageHandler = new InternalMessageHandler(this); - -#if DEVELOPMENT_BUILD || UNITY_EDITOR - messageHandler = new InternalMessageHandlerProfilingDecorator(messageHandler); -#endif - // Only create this if it's not already set (like in test cases) - MessageHandler = messageHandler; - } + // Only create this if it's not already set (like in test cases) + MessageHandler ??= CreateMessageHandler(); MessageSender = new InternalMessageSender(this); @@ -1707,6 +1699,17 @@ internal void HandleApproval(ulong ownerClientId, bool createPlayerObject, uint? } } + private IInternalMessageHandler CreateMessageHandler() + { + IInternalMessageHandler messageHandler = new InternalMessageHandler(this); + +#if DEVELOPMENT_BUILD || UNITY_EDITOR + messageHandler = new InternalMessageHandlerProfilingDecorator(messageHandler); +#endif + + return messageHandler; + } + private void ProfilerBeginTick() { ProfilerNotifier.ProfilerBeginTick(); diff --git a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs index 647c6fd38d..96ac57b138 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs @@ -6,27 +6,26 @@ namespace MLAPI.Profiling { -#if DEVELOPMENT_BUILD || UNITY_EDITOR internal class InternalMessageHandlerProfilingDecorator : IInternalMessageHandler { - static readonly ProfilerMarker s_HandleConnectionRequest = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionRequest)}"); - static readonly ProfilerMarker s_HandleConnectionApproved = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionApproved)}"); - static readonly ProfilerMarker s_HandleAddObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObject)}"); - static readonly ProfilerMarker s_HandleDestroyObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObject)}"); - static readonly ProfilerMarker s_HandleSwitchScene = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleSwitchScene)}"); - static readonly ProfilerMarker s_HandleClientSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleClientSwitchSceneCompleted)}"); - static readonly ProfilerMarker s_HandleChangeOwner = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleChangeOwner)}"); - static readonly ProfilerMarker s_HandleAddObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObjects)}"); - static readonly ProfilerMarker s_HandleDestroyObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObjects)}"); - static readonly ProfilerMarker s_HandleTimeSync = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleTimeSync)}"); - static readonly ProfilerMarker s_HandleNetworkVariableDelta = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableDelta)}"); - static readonly ProfilerMarker s_HandleNetworkVariableUpdate = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableUpdate)}"); - static readonly ProfilerMarker s_HandleUnnamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleUnnamedMessage)}"); - static readonly ProfilerMarker s_HandleNamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNamedMessage)}"); - static readonly ProfilerMarker s_HandleNetworkLog = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkLog)}"); - static readonly ProfilerMarker s_RpcReceiveQueueItemServerRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ServerRpc)}"); - static readonly ProfilerMarker s_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); - static readonly ProfilerMarker s_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); + readonly ProfilerMarker m_HandleConnectionRequest = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionRequest)}"); + readonly ProfilerMarker m_HandleConnectionApproved = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionApproved)}"); + readonly ProfilerMarker m_HandleAddObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObject)}"); + readonly ProfilerMarker m_HandleDestroyObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObject)}"); + readonly ProfilerMarker m_HandleSwitchScene = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleSwitchScene)}"); + readonly ProfilerMarker m_HandleClientSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleClientSwitchSceneCompleted)}"); + readonly ProfilerMarker m_HandleChangeOwner = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleChangeOwner)}"); + readonly ProfilerMarker m_HandleAddObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObjects)}"); + readonly ProfilerMarker m_HandleDestroyObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObjects)}"); + readonly ProfilerMarker m_HandleTimeSync = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleTimeSync)}"); + readonly ProfilerMarker m_HandleNetworkVariableDelta = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableDelta)}"); + readonly ProfilerMarker m_HandleNetworkVariableUpdate = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableUpdate)}"); + readonly ProfilerMarker m_HandleUnnamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleUnnamedMessage)}"); + readonly ProfilerMarker m_HandleNamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNamedMessage)}"); + readonly ProfilerMarker m_HandleNetworkLog = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkLog)}"); + readonly ProfilerMarker m_RpcReceiveQueueItemServerRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ServerRpc)}"); + readonly ProfilerMarker m_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); + readonly ProfilerMarker m_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); readonly IInternalMessageHandler m_MessageHandler; @@ -39,110 +38,110 @@ internal InternalMessageHandlerProfilingDecorator(IInternalMessageHandler messag public void HandleConnectionRequest(ulong clientId, Stream stream) { - s_HandleConnectionRequest.Begin(); + m_HandleConnectionRequest.Begin(); m_MessageHandler.HandleConnectionRequest(clientId, stream); - s_HandleConnectionRequest.End(); + m_HandleConnectionRequest.End(); } public void HandleConnectionApproved(ulong clientId, Stream stream, float receiveTime) { - s_HandleConnectionApproved.Begin(); + m_HandleConnectionApproved.Begin(); m_MessageHandler.HandleConnectionApproved(clientId, stream, receiveTime); - s_HandleConnectionApproved.End(); + m_HandleConnectionApproved.End(); } public void HandleAddObject(ulong clientId, Stream stream) { - s_HandleAddObject.Begin(); + m_HandleAddObject.Begin(); m_MessageHandler.HandleAddObject(clientId, stream); - s_HandleAddObject.End(); + m_HandleAddObject.End(); } public void HandleDestroyObject(ulong clientId, Stream stream) { - s_HandleDestroyObject.Begin(); + m_HandleDestroyObject.Begin(); m_MessageHandler.HandleDestroyObject(clientId, stream); - s_HandleDestroyObject.End(); + m_HandleDestroyObject.End(); } public void HandleSwitchScene(ulong clientId, Stream stream) { - s_HandleSwitchScene.Begin(); + m_HandleSwitchScene.Begin(); m_MessageHandler.HandleSwitchScene(clientId, stream); - s_HandleSwitchScene.End(); + m_HandleSwitchScene.End(); } public void HandleClientSwitchSceneCompleted(ulong clientId, Stream stream) { - s_HandleClientSwitchSceneCompleted.Begin(); + m_HandleClientSwitchSceneCompleted.Begin(); m_MessageHandler.HandleClientSwitchSceneCompleted(clientId, stream); - s_HandleClientSwitchSceneCompleted.End(); + m_HandleClientSwitchSceneCompleted.End(); } public void HandleChangeOwner(ulong clientId, Stream stream) { - s_HandleChangeOwner.Begin(); + m_HandleChangeOwner.Begin(); m_MessageHandler.HandleChangeOwner(clientId, stream); - s_HandleChangeOwner.End(); + m_HandleChangeOwner.End(); } public void HandleAddObjects(ulong clientId, Stream stream) { - s_HandleAddObjects.Begin(); + m_HandleAddObjects.Begin(); m_MessageHandler.HandleAddObjects(clientId, stream); - s_HandleAddObjects.End(); + m_HandleAddObjects.End(); } public void HandleDestroyObjects(ulong clientId, Stream stream) { - s_HandleDestroyObjects.Begin(); + m_HandleDestroyObjects.Begin(); m_MessageHandler.HandleDestroyObjects(clientId, stream); - s_HandleDestroyObjects.End(); + m_HandleDestroyObjects.End(); } public void HandleTimeSync(ulong clientId, Stream stream, float receiveTime) { - s_HandleTimeSync.Begin(); + m_HandleTimeSync.Begin(); m_MessageHandler.HandleTimeSync(clientId, stream, receiveTime); - s_HandleTimeSync.End(); + m_HandleTimeSync.End(); } public void HandleNetworkVariableDelta(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) { - s_HandleNetworkVariableDelta.Begin(); + m_HandleNetworkVariableDelta.Begin(); m_MessageHandler.HandleNetworkVariableDelta(clientId, stream, bufferCallback, bufferPreset); - s_HandleNetworkVariableDelta.End(); + m_HandleNetworkVariableDelta.End(); } public void HandleNetworkVariableUpdate(ulong clientId, Stream stream, Action bufferCallback, PreBufferPreset bufferPreset) { - s_HandleNetworkVariableUpdate.Begin(); + m_HandleNetworkVariableUpdate.Begin(); m_MessageHandler.HandleNetworkVariableUpdate(clientId, stream, bufferCallback, bufferPreset); - s_HandleNetworkVariableUpdate.End(); + m_HandleNetworkVariableUpdate.End(); } public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime, RpcQueueContainer.QueueItemType queueItemType) @@ -150,10 +149,10 @@ public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime switch (queueItemType) { case RpcQueueContainer.QueueItemType.ServerRpc: - s_RpcReceiveQueueItemServerRpc.Begin(); + m_RpcReceiveQueueItemServerRpc.Begin(); break; case RpcQueueContainer.QueueItemType.ClientRpc: - s_RpcReceiveQueueItemClientRpc.Begin(); + m_RpcReceiveQueueItemClientRpc.Begin(); break; } @@ -162,49 +161,48 @@ public void RpcReceiveQueueItem(ulong clientId, Stream stream, float receiveTime switch (queueItemType) { case RpcQueueContainer.QueueItemType.ServerRpc: - s_RpcReceiveQueueItemServerRpc.End(); + m_RpcReceiveQueueItemServerRpc.End(); break; case RpcQueueContainer.QueueItemType.ClientRpc: - s_RpcReceiveQueueItemClientRpc.End(); + m_RpcReceiveQueueItemClientRpc.End(); break; } } public void HandleUnnamedMessage(ulong clientId, Stream stream) { - s_HandleUnnamedMessage.Begin(); + m_HandleUnnamedMessage.Begin(); m_MessageHandler.HandleUnnamedMessage(clientId, stream); - s_HandleUnnamedMessage.End(); + m_HandleUnnamedMessage.End(); } public void HandleNamedMessage(ulong clientId, Stream stream) { - s_HandleNamedMessage.Begin(); + m_HandleNamedMessage.Begin(); m_MessageHandler.HandleNamedMessage(clientId, stream); - s_HandleNamedMessage.End(); + m_HandleNamedMessage.End(); } public void HandleNetworkLog(ulong clientId, Stream stream) { - s_HandleNetworkLog.Begin(); + m_HandleNetworkLog.Begin(); m_MessageHandler.HandleNetworkLog(clientId, stream); - s_HandleNetworkLog.End(); + m_HandleNetworkLog.End(); } public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) { - s_HandleAllClientsSwitchSceneCompleted.Begin(); + m_HandleAllClientsSwitchSceneCompleted.Begin(); m_MessageHandler.HandleAllClientsSwitchSceneCompleted(clientId, stream); - s_HandleAllClientsSwitchSceneCompleted.End(); + m_HandleAllClientsSwitchSceneCompleted.End(); } } -#endif } \ No newline at end of file From 318d04664f4303c4fa54e519b133368119de23b2 Mon Sep 17 00:00:00 2001 From: Benoit Doyon Date: Fri, 4 Jun 2021 09:11:50 -0400 Subject: [PATCH 4/6] Formatting fixes --- ...nternalMessageHandlerProfilingDecorator.cs | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs index bded24f963..9563ec2d6f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs @@ -8,23 +8,23 @@ namespace MLAPI.Profiling { internal class InternalMessageHandlerProfilingDecorator : IInternalMessageHandler { - readonly ProfilerMarker m_HandleConnectionRequest = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionRequest)}"); - readonly ProfilerMarker m_HandleConnectionApproved = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionApproved)}"); - readonly ProfilerMarker m_HandleAddObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObject)}"); - readonly ProfilerMarker m_HandleDestroyObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObject)}"); - readonly ProfilerMarker m_HandleSwitchScene = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleSwitchScene)}"); - readonly ProfilerMarker m_HandleClientSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleClientSwitchSceneCompleted)}"); - readonly ProfilerMarker m_HandleChangeOwner = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleChangeOwner)}"); - readonly ProfilerMarker m_HandleAddObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObjects)}"); - readonly ProfilerMarker m_HandleDestroyObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObjects)}"); - readonly ProfilerMarker m_HandleTimeSync = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleTimeSync)}"); - readonly ProfilerMarker m_HandleNetworkVariableDelta = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableDelta)}"); - readonly ProfilerMarker m_HandleUnnamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleUnnamedMessage)}"); - readonly ProfilerMarker m_HandleNamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNamedMessage)}"); - readonly ProfilerMarker m_HandleNetworkLog = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkLog)}"); - readonly ProfilerMarker m_RpcReceiveQueueItemServerRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ServerRpc)}"); - readonly ProfilerMarker m_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); - readonly ProfilerMarker m_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); + private readonly ProfilerMarker m_HandleConnectionRequest = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionRequest)}"); + private readonly ProfilerMarker m_HandleConnectionApproved = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleConnectionApproved)}"); + private readonly ProfilerMarker m_HandleAddObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObject)}"); + private readonly ProfilerMarker m_HandleDestroyObject = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObject)}"); + private readonly ProfilerMarker m_HandleSwitchScene = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleSwitchScene)}"); + private readonly ProfilerMarker m_HandleClientSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleClientSwitchSceneCompleted)}"); + private readonly ProfilerMarker m_HandleChangeOwner = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleChangeOwner)}"); + private readonly ProfilerMarker m_HandleAddObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAddObjects)}"); + private readonly ProfilerMarker m_HandleDestroyObjects = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleDestroyObjects)}"); + private readonly ProfilerMarker m_HandleTimeSync = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleTimeSync)}"); + private readonly ProfilerMarker m_HandleNetworkVariableDelta = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkVariableDelta)}"); + private readonly ProfilerMarker m_HandleUnnamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleUnnamedMessage)}"); + private readonly ProfilerMarker m_HandleNamedMessage = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNamedMessage)}"); + private readonly ProfilerMarker m_HandleNetworkLog = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleNetworkLog)}"); + private readonly ProfilerMarker m_RpcReceiveQueueItemServerRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ServerRpc)}"); + private readonly ProfilerMarker m_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); + private readonly ProfilerMarker m_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); readonly IInternalMessageHandler m_MessageHandler; From 8a2f5a686f075f4cf572276793ef1c8e9cc10dd6 Mon Sep 17 00:00:00 2001 From: Benoit Doyon Date: Fri, 4 Jun 2021 09:42:49 -0400 Subject: [PATCH 5/6] Formatting fixes --- .../Profiling/InternalMessageHandlerProfilingDecorator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs index 9563ec2d6f..2613a2d70e 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs @@ -26,7 +26,7 @@ internal class InternalMessageHandlerProfilingDecorator : IInternalMessageHandle private readonly ProfilerMarker m_RpcReceiveQueueItemClientRpc = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(RpcReceiveQueueItem)}.{nameof(RpcQueueContainer.QueueItemType.ClientRpc)}"); private readonly ProfilerMarker m_HandleAllClientsSwitchSceneCompleted = new ProfilerMarker($"{nameof(InternalMessageHandler)}.{nameof(HandleAllClientsSwitchSceneCompleted)}"); - readonly IInternalMessageHandler m_MessageHandler; + private readonly IInternalMessageHandler m_MessageHandler; internal InternalMessageHandlerProfilingDecorator(IInternalMessageHandler messageHandler) { From 3e81fe311914d3a83678cd602bf5ab634fe6e8b7 Mon Sep 17 00:00:00 2001 From: Benoit Doyon Date: Fri, 4 Jun 2021 09:58:38 -0400 Subject: [PATCH 6/6] Formatting fixes --- .../Profiling/InternalMessageHandlerProfilingDecoratorTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs index d31fcb1d4c..2d60f99b09 100644 --- a/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Editor/Profiling/InternalMessageHandlerProfilingDecoratorTests.cs @@ -8,7 +8,7 @@ namespace MLAPI.EditorTests.Profiling { public class InternalMessageHandlerProfilingDecoratorTests { - InternalMessageHandlerProfilingDecorator m_Decorator; + private InternalMessageHandlerProfilingDecorator m_Decorator; [SetUp] public void Setup()