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) public void DispatchOrders(Connection conn, int frame, byte[] data)
{ {
// Sync packet - we only care about the last value // 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; LastSyncFrame = frame;
lastSyncPacket = data; lastSyncPacket = data;

View File

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

View File

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

View File

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

View File

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

View File

@@ -25,9 +25,9 @@ namespace OpenRA.Network
static bool IsGameStart(byte[] data) static bool IsGameStart(byte[] data)
{ {
if (data.Length == 5 && data[4] == 0xbf) if (data.Length == 5 && data[4] == (byte)OrderType.Disconnect)
return false; return false;
if (data.Length >= 5 && data[4] == 0x65) if (data.Length >= 5 && data[4] == (byte)OrderType.SyncHash)
return false; return false;
var frame = BitConverter.ToInt32(data, 0); 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 // All clients have left: clean up
if (!Conns.Any()) if (!Conns.Any())
@@ -944,7 +944,7 @@ namespace OpenRA.Server
foreach (var c in Conns) foreach (var c in Conns)
foreach (var d 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) if (GameSave == null && LobbyInfo.GlobalSettings.GameSavesEnabled)
GameSave = new GameSave(); GameSave = new GameSave();