Replace magic numbers with an OrderType enum.
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user