Replace magic numbers with an OrderType enum.

This commit is contained in:
Paul Chote
2019-05-11 16:03:57 +00:00
committed by abcdefg30
parent 862a274357
commit bfddfec461
7 changed files with 23 additions and 16 deletions

View File

@@ -188,7 +188,7 @@ namespace OpenRA.Network
public void DispatchOrders(Connection conn, int frame, byte[] data)
{
// Sync packet - we only care about the last value
if (data.Length > 0 && data[0] == 0x65 && frame > LastSyncFrame)
if (data.Length > 0 && data[0] == (byte)OrderType.SyncHash && frame > LastSyncFrame)
{
LastSyncFrame = frame;
lastSyncPacket = data;

View File

@@ -16,6 +16,13 @@ using OpenRA.Traits;
namespace OpenRA
{
public enum OrderType : byte
{
SyncHash = 0x65,
Disconnect = 0xBF,
Fields = 0xFF
}
[Flags]
enum OrderFields : byte
{
@@ -68,10 +75,10 @@ namespace OpenRA
{
try
{
var magic = r.ReadByte();
switch (magic)
var type = (OrderType)r.ReadByte();
switch (type)
{
case 0xFF:
case OrderType.Fields:
{
var order = r.ReadString();
var flags = (OrderFields)r.ReadByte();
@@ -152,7 +159,7 @@ namespace OpenRA
default:
{
Log.Write("debug", "Received unknown order with magic {0}", magic);
Log.Write("debug", "Received unknown order with type {0}", type);
return null;
}
}
@@ -236,7 +243,7 @@ namespace OpenRA
var ret = new MemoryStream(minLength);
var w = new BinaryWriter(ret);
w.Write((byte)0xFF);
w.Write((byte)OrderType.Fields);
w.Write(OrderString);
var fields = OrderFields.None;

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Network
var ms = new MemoryStream(1 + 4);
using (var writer = new BinaryWriter(ms))
{
writer.Write((byte)0x65);
writer.Write((byte)OrderType.SyncHash);
writer.Write(sync);
}

View File

@@ -123,9 +123,9 @@ namespace OpenRA.Network
(clientId, packet) =>
{
var frame = BitConverter.ToInt32(packet, 0);
if (packet.Length == 5 && packet[4] == 0xBF)
if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect)
frameData.ClientQuit(clientId, frame);
else if (packet.Length >= 5 && packet[4] == 0x65)
else if (packet.Length >= 5 && packet[4] == (byte)OrderType.SyncHash)
CheckSync(packet);
else if (frame == 0)
immediatePackets.Add(Pair.New(clientId, packet));

View File

@@ -65,9 +65,9 @@ namespace OpenRA.Network
(!lastClientsFrame.ContainsKey(client) || frame > lastClientsFrame[client]))
lastClientsFrame[client] = frame;
if (packet.Length == 5 && packet[4] == 0xBF)
if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect)
continue; // disconnect
else if (packet.Length >= 5 && packet[4] == 0x65)
else if (packet.Length >= 5 && packet[4] == (byte)OrderType.SyncHash)
continue; // sync
else if (frame == 0)
{
@@ -110,7 +110,7 @@ namespace OpenRA.Network
continue;
var packet = tmpPacketPair.Second;
if (packet.Length == 5 && packet[4] == 0xBF)
if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect)
{
var lastClientFrame = lastClientsFrame[client];
var lastFramePacket = BitConverter.GetBytes(lastClientFrame);

View File

@@ -25,9 +25,9 @@ namespace OpenRA.Network
static bool IsGameStart(byte[] data)
{
if (data.Length == 5 && data[4] == 0xbf)
if (data.Length == 5 && data[4] == (byte)OrderType.Disconnect)
return false;
if (data.Length >= 5 && data[4] == 0x65)
if (data.Length >= 5 && data[4] == (byte)OrderType.SyncHash)
return false;
var frame = BitConverter.ToInt32(data, 0);

View File

@@ -834,7 +834,7 @@ namespace OpenRA.Server
}
}
DispatchOrders(toDrop, toDrop.MostRecentFrame, new byte[] { 0xbf });
DispatchOrders(toDrop, toDrop.MostRecentFrame, new[] { (byte)OrderType.Disconnect });
// All clients have left: clean up
if (!Conns.Any())
@@ -944,7 +944,7 @@ namespace OpenRA.Server
foreach (var c in Conns)
foreach (var d in Conns)
DispatchOrdersToClient(c, d.PlayerIndex, 0x7FFFFFFF, new byte[] { 0xBF });
DispatchOrdersToClient(c, d.PlayerIndex, 0x7FFFFFFF, new[] { (byte)OrderType.Disconnect });
if (GameSave == null && LobbyInfo.GlobalSettings.GameSavesEnabled)
GameSave = new GameSave();