From 408f30b5cd4665faf95074fe706cce1b6e67974c Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 23 Aug 2021 22:59:03 +0100 Subject: [PATCH] Extract OrderIO.SerializeOrders helper. Note: This changes immediate orders to no longer be individually framed in their own packets. --- OpenRA.Game/Network/Connection.cs | 14 ++------------ OpenRA.Game/Network/OrderIO.cs | 9 +++++++++ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/OpenRA.Game/Network/Connection.cs b/OpenRA.Game/Network/Connection.cs index e05d73ec2d..e1159a6870 100644 --- a/OpenRA.Game/Network/Connection.cs +++ b/OpenRA.Game/Network/Connection.cs @@ -52,22 +52,12 @@ namespace OpenRA.Network public virtual void Send(int frame, IEnumerable orders) { - var ms = new MemoryStream(); - ms.WriteArray(BitConverter.GetBytes(frame)); - foreach (var o in orders) - ms.WriteArray(o.Serialize()); - Send(ms.ToArray()); + Send(OrderIO.SerializeOrders(frame, orders)); } public virtual void SendImmediate(IEnumerable orders) { - foreach (var o in orders) - { - var ms = new MemoryStream(); - ms.WriteArray(BitConverter.GetBytes(0)); - ms.WriteArray(o.Serialize()); - Send(ms.ToArray()); - } + Send(OrderIO.SerializeOrders(0, orders)); } public virtual void SendSync(int frame, int syncHash, ulong defeatState) diff --git a/OpenRA.Game/Network/OrderIO.cs b/OpenRA.Game/Network/OrderIO.cs index 2a0961299c..d8ca90e162 100644 --- a/OpenRA.Game/Network/OrderIO.cs +++ b/OpenRA.Game/Network/OrderIO.cs @@ -79,6 +79,15 @@ namespace OpenRA.Network return ms.GetBuffer(); } + public static byte[] SerializeOrders(int frame, IEnumerable orders) + { + var ms = new MemoryStream(); + ms.WriteArray(BitConverter.GetBytes(frame)); + foreach (var o in orders) + ms.WriteArray(o.Serialize()); + return ms.ToArray(); + } + public static bool TryParseDisconnect(byte[] packet, out int clientId) { if (packet.Length == Order.DisconnectOrderLength + 4 && packet[4] == (byte)OrderType.Disconnect)