From b774556a5f41310393915fa036a5b6731f9a689c Mon Sep 17 00:00:00 2001 From: jrb0001 Date: Mon, 29 Apr 2019 20:30:29 +0200 Subject: [PATCH] Reduce overhead of every single order/sync frame by 162/222 bytes --- OpenRA.Game/Server/Server.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 1206538d87..f071c66c66 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -275,8 +275,13 @@ namespace OpenRA.Server // Assign the player number. newConn.PlayerIndex = ChooseFreePlayerIndex(); newConn.AuthToken = token; - SendData(newConn.Socket, BitConverter.GetBytes(ProtocolVersion.Version)); - SendData(newConn.Socket, BitConverter.GetBytes(newConn.PlayerIndex)); + + // Send handshake and client index. + var ms = new MemoryStream(8); + ms.WriteArray(BitConverter.GetBytes(ProtocolVersion.Version)); + ms.WriteArray(BitConverter.GetBytes(newConn.PlayerIndex)); + SendData(newConn.Socket, ms.ToArray()); + PreConns.Add(newConn); // Dispatch a handshake order @@ -533,10 +538,12 @@ namespace OpenRA.Server { try { - SendData(c.Socket, BitConverter.GetBytes(data.Length + 4)); - SendData(c.Socket, BitConverter.GetBytes(client)); - SendData(c.Socket, BitConverter.GetBytes(frame)); - SendData(c.Socket, data); + var ms = new MemoryStream(data.Length + 12); + ms.WriteArray(BitConverter.GetBytes(data.Length + 4)); + ms.WriteArray(BitConverter.GetBytes(client)); + ms.WriteArray(BitConverter.GetBytes(frame)); + ms.WriteArray(data); + SendData(c.Socket, ms.ToArray()); } catch (Exception e) {