Skip to content

Commit 39c262e

Browse files
committed
Removed Generic MLAPI message header allocation
1 parent 554010d commit 39c262e

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ private ConnectionConfig Init(bool server)
234234
NetworkSceneManager.registeredSceneNames = new HashSet<string>();
235235
NetworkSceneManager.sceneIndexToString = new Dictionary<uint, string>();
236236
NetworkSceneManager.sceneNameToIndex = new Dictionary<string, uint>();
237+
InternalMessageHandler.FinalMessageBuffer = new byte[NetworkConfig.MessageBufferSize];
237238

238239
if(NetworkConfig.HandleObjectSpawning)
239240
{

MLAPI/NetworkingManagerComponents/Core/InternalMessageHandler.Send.cs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
32
using MLAPI.Data;
43
using MLAPI.NetworkingManagerComponents.Binary;
54
using MLAPI.NetworkingManagerComponents.Cryptography;
@@ -10,6 +9,7 @@ namespace MLAPI.NetworkingManagerComponents.Core
109
{
1110
internal static partial class InternalMessageHandler
1211
{
12+
internal static byte[] FinalMessageBuffer;
1313
internal static void PassthroughSend(uint targetId, uint sourceId, ushort messageType, int channelId, byte[] data, uint? networkId = null, ushort? orderId = null)
1414
{
1515
NetId targetNetId = new NetId(targetId);
@@ -41,8 +41,10 @@ internal static void PassthroughSend(uint targetId, uint sourceId, ushort messag
4141
else
4242
writer.WriteByteArray(data);
4343

44+
writer.Finalize(ref FinalMessageBuffer);
45+
4446
byte error;
45-
NetworkTransport.QueueMessageForSending(targetNetId.HostId, targetNetId.ConnectionId, channelId, writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
47+
NetworkTransport.QueueMessageForSending(targetNetId.HostId, targetNetId.ConnectionId, channelId, FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
4648
}
4749
}
4850

@@ -103,10 +105,13 @@ internal static void Send(uint clientId, string messageType, string channelName,
103105
byte error;
104106
if (isPassthrough)
105107
netId = NetId.ServerNetId;
108+
109+
writer.Finalize(ref FinalMessageBuffer);
110+
106111
if (skipQueue)
107-
NetworkTransport.Send(netId.HostId, netId.ConnectionId, MessageManager.channels[channelName], writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
112+
NetworkTransport.Send(netId.HostId, netId.ConnectionId, MessageManager.channels[channelName], FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
108113
else
109-
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, MessageManager.channels[channelName], writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
114+
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, MessageManager.channels[channelName], FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
110115
}
111116
}
112117

@@ -149,8 +154,11 @@ internal static void Send(uint[] clientIds, string messageType, string channelNa
149154
//Client trying to send data to host
150155
netId = NetId.ServerNetId;
151156
}
157+
158+
writer.Finalize(ref FinalMessageBuffer);
159+
152160
byte error;
153-
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
161+
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
154162
}
155163
}
156164
}
@@ -194,8 +202,11 @@ internal static void Send(List<uint> clientIds, string messageType, string chann
194202
//Client trying to send data to host
195203
netId = NetId.ServerNetId;
196204
}
205+
206+
writer.Finalize(ref FinalMessageBuffer);
207+
197208
byte error;
198-
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
209+
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
199210
}
200211
}
201212
}
@@ -240,8 +251,11 @@ internal static void Send(string messageType, string channelName, byte[] data, u
240251
//Client trying to send data to host
241252
netId = NetId.ServerNetId;
242253
}
254+
255+
writer.Finalize(ref FinalMessageBuffer);
256+
243257
byte error;
244-
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
258+
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
245259
}
246260
}
247261
}
@@ -288,8 +302,11 @@ internal static void Send(string messageType, string channelName, byte[] data, u
288302
//Client trying to send data to host
289303
netId = NetId.ServerNetId;
290304
}
305+
306+
writer.Finalize(ref FinalMessageBuffer);
307+
291308
byte error;
292-
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, writer.Finalize(), (int)writer.GetFinalizeSize(), out error);
309+
NetworkTransport.QueueMessageForSending(netId.HostId, netId.ConnectionId, channel, FinalMessageBuffer, (int)writer.GetFinalizeSize(), out error);
293310
}
294311
}
295312
}

0 commit comments

Comments
 (0)