|
25 | 25 | using static MLAPI.Messaging.CustomMessagingManager; |
26 | 26 | using MLAPI.Exceptions; |
27 | 27 | using MLAPI.Transports.Tasks; |
| 28 | +using MLAPI.Messaging.Buffering; |
28 | 29 |
|
29 | 30 | namespace MLAPI |
30 | 31 | { |
@@ -333,7 +334,6 @@ private void Init(bool server) |
333 | 334 | NetworkSceneManager.sceneIndexToString.Clear(); |
334 | 335 | NetworkSceneManager.sceneNameToIndex.Clear(); |
335 | 336 | NetworkSceneManager.sceneSwitchProgresses.Clear(); |
336 | | - NetworkSceneManager.sceneBufferedNetworkIds.Clear(); |
337 | 337 |
|
338 | 338 | if (NetworkConfig.NetworkTransport == null) |
339 | 339 | { |
@@ -658,6 +658,11 @@ private void Update() |
658 | 658 | NetworkedObject.NetworkedBehaviourUpdate(); |
659 | 659 | } |
660 | 660 |
|
| 661 | + if (!IsServer && NetworkConfig.EnableMessageBuffering) |
| 662 | + { |
| 663 | + BufferManager.CleanBuffer(); |
| 664 | + } |
| 665 | + |
661 | 666 | if (IsServer) |
662 | 667 | { |
663 | 668 | lastEventTickTime = NetworkTime; |
@@ -905,22 +910,17 @@ internal void HandleIncomingData(ulong clientId, string channelName, ArraySegmen |
905 | 910 |
|
906 | 911 | void bufferCallback(ulong networkId) |
907 | 912 | { |
908 | | - // Alloc some memory |
909 | | - PooledBitStream pooledData = PooledBitStream.Get(); |
910 | | - |
911 | | - // Copy the data |
912 | | - pooledData.Write(data.Array, data.Offset, data.Count); |
| 913 | + if (!NetworkConfig.EnableMessageBuffering) |
| 914 | + { |
| 915 | + throw new InvalidOperationException("Cannot buffer with buffering disabled."); |
| 916 | + } |
913 | 917 |
|
914 | | - NetworkSceneManager.BufferedMessage message = new NetworkSceneManager.BufferedMessage() |
| 918 | + if (IsServer) |
915 | 919 | { |
916 | | - channelName = channelName, |
917 | | - pool = pooledData, |
918 | | - payload = new ArraySegment<byte>(pooledData.GetBuffer(), 0, data.Count), |
919 | | - receiveTime = receiveTime, |
920 | | - sender = clientId |
921 | | - }; |
922 | | - |
923 | | - NetworkSceneManager.sceneBufferedNetworkIds[networkId].Enqueue(message); |
| 920 | + throw new InvalidOperationException("Cannot buffer on server."); |
| 921 | + } |
| 922 | + |
| 923 | + BufferManager.BufferMessageForNetworkId(networkId, clientId, channelName, receiveTime, data); |
924 | 924 | } |
925 | 925 |
|
926 | 926 |
|
@@ -962,10 +962,10 @@ void bufferCallback(ulong networkId) |
962 | 962 | InternalMessageHandler.HandleNetworkedVarUpdate(clientId, messageStream, bufferCallback); |
963 | 963 | break; |
964 | 964 | case MLAPIConstants.MLAPI_SERVER_RPC: |
965 | | - if (IsServer) InternalMessageHandler.HandleServerRPC(clientId, messageStream, bufferCallback); |
| 965 | + if (IsServer) InternalMessageHandler.HandleServerRPC(clientId, messageStream); |
966 | 966 | break; |
967 | 967 | case MLAPIConstants.MLAPI_SERVER_RPC_REQUEST: |
968 | | - if (IsServer) InternalMessageHandler.HandleServerRPCRequest(clientId, messageStream, channelName, security, bufferCallback); |
| 968 | + if (IsServer) InternalMessageHandler.HandleServerRPCRequest(clientId, messageStream, channelName, security); |
969 | 969 | break; |
970 | 970 | case MLAPIConstants.MLAPI_SERVER_RPC_RESPONSE: |
971 | 971 | if (IsClient) InternalMessageHandler.HandleServerRPCResponse(clientId, messageStream); |
|
0 commit comments