remove some plenks
no logic changes
This commit is contained in:
@@ -30,10 +30,10 @@ namespace OpenRA.Network
|
|||||||
{
|
{
|
||||||
int LocalClientId { get; }
|
int LocalClientId { get; }
|
||||||
ConnectionState ConnectionState { get; }
|
ConnectionState ConnectionState { get; }
|
||||||
void Send( int frame, List<byte[]> orders );
|
void Send(int frame, List<byte[]> orders);
|
||||||
void SendImmediate( List<byte[]> orders );
|
void SendImmediate(List<byte[]> orders);
|
||||||
void SendSync( int frame, byte[] syncData );
|
void SendSync(int frame, byte[] syncData);
|
||||||
void Receive( Action<int, byte[]> packetFn );
|
void Receive(Action<int, byte[]> packetFn);
|
||||||
}
|
}
|
||||||
|
|
||||||
class EchoConnection : IConnection
|
class EchoConnection : IConnection
|
||||||
@@ -55,51 +55,51 @@ namespace OpenRA.Network
|
|||||||
get { return ConnectionState.PreConnecting; }
|
get { return ConnectionState.PreConnecting; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Send( int frame, List<byte[]> orders )
|
public virtual void Send(int frame, List<byte[]> orders)
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
ms.Write( BitConverter.GetBytes( frame ) );
|
ms.Write(BitConverter.GetBytes(frame));
|
||||||
foreach( var o in orders )
|
foreach (var o in orders)
|
||||||
ms.Write( o );
|
ms.Write(o);
|
||||||
Send( ms.ToArray() );
|
Send(ms.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendImmediate( List<byte[]> orders )
|
public virtual void SendImmediate(List<byte[]> orders)
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
ms.Write( BitConverter.GetBytes( (int)0 ) );
|
ms.Write(BitConverter.GetBytes((int)0));
|
||||||
foreach( var o in orders )
|
foreach (var o in orders)
|
||||||
ms.Write( o );
|
ms.Write(o);
|
||||||
Send( ms.ToArray() );
|
Send(ms.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendSync( int frame, byte[] syncData )
|
public virtual void SendSync(int frame, byte[] syncData)
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
ms.Write( BitConverter.GetBytes( frame ) );
|
ms.Write(BitConverter.GetBytes(frame));
|
||||||
ms.Write( syncData );
|
ms.Write(syncData);
|
||||||
Send( ms.ToArray() );
|
Send(ms.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void Send( byte[] packet )
|
protected virtual void Send(byte[] packet)
|
||||||
{
|
{
|
||||||
if( packet.Length == 0 )
|
if (packet.Length == 0)
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
lock( this )
|
lock (this)
|
||||||
receivedPackets.Add( new ReceivedPacket { FromClient = LocalClientId, Data = packet } );
|
receivedPackets.Add(new ReceivedPacket { FromClient = LocalClientId, Data = packet } );
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Receive( Action<int, byte[]> packetFn )
|
public virtual void Receive(Action<int, byte[]> packetFn)
|
||||||
{
|
{
|
||||||
List<ReceivedPacket> packets;
|
List<ReceivedPacket> packets;
|
||||||
lock( this )
|
lock (this)
|
||||||
{
|
{
|
||||||
packets = receivedPackets;
|
packets = receivedPackets;
|
||||||
receivedPackets = new List<ReceivedPacket>();
|
receivedPackets = new List<ReceivedPacket>();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach( var p in packets )
|
foreach (var p in packets)
|
||||||
packetFn( p.FromClient, p.Data );
|
packetFn(p.FromClient, p.Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Dispose() { }
|
public virtual void Dispose() { }
|
||||||
@@ -112,15 +112,15 @@ namespace OpenRA.Network
|
|||||||
ConnectionState connectionState = ConnectionState.Connecting;
|
ConnectionState connectionState = ConnectionState.Connecting;
|
||||||
Thread t;
|
Thread t;
|
||||||
|
|
||||||
public NetworkConnection( string host, int port )
|
public NetworkConnection(string host, int port)
|
||||||
{
|
{
|
||||||
t = new Thread( _ =>
|
t = new Thread( _ =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
socket = new TcpClient( host, port );
|
socket = new TcpClient(host, port);
|
||||||
socket.NoDelay = true;
|
socket.NoDelay = true;
|
||||||
var reader = new BinaryReader( socket.GetStream() );
|
var reader = new BinaryReader(socket.GetStream());
|
||||||
var serverProtocol = reader.ReadInt32();
|
var serverProtocol = reader.ReadInt32();
|
||||||
|
|
||||||
if (ProtocolVersion.Version != serverProtocol)
|
if (ProtocolVersion.Version != serverProtocol)
|
||||||
@@ -131,22 +131,22 @@ namespace OpenRA.Network
|
|||||||
clientId = reader.ReadInt32();
|
clientId = reader.ReadInt32();
|
||||||
connectionState = ConnectionState.Connected;
|
connectionState = ConnectionState.Connected;
|
||||||
|
|
||||||
for( ; ; )
|
for (;;)
|
||||||
{
|
{
|
||||||
var len = reader.ReadInt32();
|
var len = reader.ReadInt32();
|
||||||
var client = reader.ReadInt32();
|
var client = reader.ReadInt32();
|
||||||
var buf = reader.ReadBytes( len );
|
var buf = reader.ReadBytes( len );
|
||||||
if( len == 0 )
|
if (len == 0)
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
lock( this )
|
lock (this)
|
||||||
receivedPackets.Add( new ReceivedPacket { FromClient = client, Data = buf } );
|
receivedPackets.Add(new ReceivedPacket { FromClient = client, Data = buf } );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
connectionState = ConnectionState.NotConnected;
|
connectionState = ConnectionState.NotConnected;
|
||||||
if( socket != null )
|
if (socket != null)
|
||||||
socket.Close();
|
socket.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -159,28 +159,28 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
List<byte[]> queuedSyncPackets = new List<byte[]>();
|
List<byte[]> queuedSyncPackets = new List<byte[]>();
|
||||||
|
|
||||||
public override void SendSync( int frame, byte[] syncData )
|
public override void SendSync(int frame, byte[] syncData)
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
ms.Write( BitConverter.GetBytes( frame ) );
|
ms.Write(BitConverter.GetBytes(frame));
|
||||||
ms.Write( syncData );
|
ms.Write(syncData);
|
||||||
queuedSyncPackets.Add( ms.ToArray() );
|
queuedSyncPackets.Add(ms.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Send( byte[] packet )
|
protected override void Send(byte[] packet)
|
||||||
{
|
{
|
||||||
base.Send( packet );
|
base.Send(packet);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
ms.Write(BitConverter.GetBytes((int)packet.Length));
|
ms.Write(BitConverter.GetBytes((int)packet.Length));
|
||||||
ms.Write(packet);
|
ms.Write(packet);
|
||||||
foreach( var q in queuedSyncPackets )
|
foreach (var q in queuedSyncPackets)
|
||||||
{
|
{
|
||||||
ms.Write( BitConverter.GetBytes( (int)q.Length ) );
|
ms.Write(BitConverter.GetBytes((int)q.Length));
|
||||||
ms.Write( q );
|
ms.Write(q);
|
||||||
base.Send( q );
|
base.Send(q);
|
||||||
}
|
}
|
||||||
queuedSyncPackets.Clear();
|
queuedSyncPackets.Clear();
|
||||||
ms.WriteTo(socket.GetStream());
|
ms.WriteTo(socket.GetStream());
|
||||||
@@ -192,16 +192,16 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
bool disposed = false;
|
bool disposed = false;
|
||||||
|
|
||||||
public override void Dispose ()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
if (disposed) return;
|
if (disposed) return;
|
||||||
disposed = true;
|
disposed = true;
|
||||||
GC.SuppressFinalize( this );
|
GC.SuppressFinalize(this);
|
||||||
|
|
||||||
t.Abort();
|
t.Abort();
|
||||||
if (socket != null)
|
if (socket != null)
|
||||||
socket.Client.Close();
|
socket.Client.Close();
|
||||||
using( new PerfSample( "Thread.Join" ))
|
using (new PerfSample("Thread.Join"))
|
||||||
{
|
{
|
||||||
if (!t.Join(1000))
|
if (!t.Join(1000))
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -168,16 +168,16 @@ namespace OpenRA
|
|||||||
return a.ActorID;
|
return a.ActorID;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool TryGetActorFromUInt(World world, uint aID, out Actor ret )
|
static bool TryGetActorFromUInt(World world, uint aID, out Actor ret)
|
||||||
{
|
{
|
||||||
if( aID == 0xFFFFFFFF )
|
if (aID == 0xFFFFFFFF)
|
||||||
{
|
{
|
||||||
ret = null;
|
ret = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach( var a in world.Actors.Where( x => x.ActorID == aID ) )
|
foreach (var a in world.Actors.Where(x => x.ActorID == aID))
|
||||||
{
|
{
|
||||||
ret = a;
|
ret = a;
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ namespace OpenRA.Server
|
|||||||
t.ServerStarted(this);
|
t.ServerStarted(this);
|
||||||
|
|
||||||
Log.Write("server", "Initial mods: ");
|
Log.Write("server", "Initial mods: ");
|
||||||
foreach( var m in lobbyInfo.GlobalSettings.Mods )
|
foreach (var m in lobbyInfo.GlobalSettings.Mods)
|
||||||
Log.Write("server","- {0}", m);
|
Log.Write("server","- {0}", m);
|
||||||
|
|
||||||
Log.Write("server", "Initial map: {0}",lobbyInfo.GlobalSettings.Map);
|
Log.Write("server", "Initial map: {0}",lobbyInfo.GlobalSettings.Map);
|
||||||
@@ -118,31 +118,31 @@ namespace OpenRA.Server
|
|||||||
new Thread( _ =>
|
new Thread( _ =>
|
||||||
{
|
{
|
||||||
var timeout = ServerTraits.WithInterface<ITick>().Min(t => t.TickTimeout);
|
var timeout = ServerTraits.WithInterface<ITick>().Min(t => t.TickTimeout);
|
||||||
for( ; ; )
|
for (;;)
|
||||||
{
|
{
|
||||||
var checkRead = new List<Socket>();
|
var checkRead = new List<Socket>();
|
||||||
checkRead.Add( listener.Server );
|
checkRead.Add(listener.Server);
|
||||||
foreach( var c in conns ) checkRead.Add( c.socket );
|
foreach (var c in conns) checkRead.Add(c.socket);
|
||||||
foreach( var c in preConns ) checkRead.Add( c.socket );
|
foreach (var c in preConns) checkRead.Add(c.socket);
|
||||||
|
|
||||||
Socket.Select( checkRead, null, null, timeout );
|
Socket.Select(checkRead, null, null, timeout);
|
||||||
if (State == ServerState.ShuttingDown)
|
if (State == ServerState.ShuttingDown)
|
||||||
{
|
{
|
||||||
EndGame();
|
EndGame();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach( var s in checkRead )
|
foreach (var s in checkRead)
|
||||||
if( s == listener.Server ) AcceptConnection();
|
if (s == listener.Server) AcceptConnection();
|
||||||
else if (preConns.Count > 0)
|
else if (preConns.Count > 0)
|
||||||
{
|
{
|
||||||
var p = preConns.SingleOrDefault( c => c.socket == s );
|
var p = preConns.SingleOrDefault(c => c.socket == s);
|
||||||
if (p != null) p.ReadData( this );
|
if (p != null) p.ReadData(this);
|
||||||
}
|
}
|
||||||
else if (conns.Count > 0)
|
else if (conns.Count > 0)
|
||||||
{
|
{
|
||||||
var conn = conns.SingleOrDefault( c => c.socket == s );
|
var conn = conns.SingleOrDefault(c => c.socket == s);
|
||||||
if (conn != null) conn.ReadData( this );
|
if (conn != null) conn.ReadData(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var t in ServerTraits.WithInterface<ITick>())
|
foreach (var t in ServerTraits.WithInterface<ITick>())
|
||||||
@@ -151,8 +151,7 @@ namespace OpenRA.Server
|
|||||||
if (State == ServerState.ShuttingDown)
|
if (State == ServerState.ShuttingDown)
|
||||||
{
|
{
|
||||||
EndGame();
|
EndGame();
|
||||||
if (Settings.AllowPortForward)
|
if (Settings.AllowPortForward) UPnP.RemovePortforward();
|
||||||
UPnP.RemovePortforward();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -210,7 +209,7 @@ namespace OpenRA.Server
|
|||||||
var request = new HandshakeRequest()
|
var request = new HandshakeRequest()
|
||||||
{
|
{
|
||||||
Map = lobbyInfo.GlobalSettings.Map,
|
Map = lobbyInfo.GlobalSettings.Map,
|
||||||
Mods = lobbyInfo.GlobalSettings.Mods.Select(m => "{0}@{1}".F(m,Mod.AllMods[m].Version)).ToArray()
|
Mods = lobbyInfo.GlobalSettings.Mods.Select(m => "{0}@{1}".F(m, Mod.AllMods[m].Version)).ToArray()
|
||||||
};
|
};
|
||||||
DispatchOrdersToClient(newConn, 0, 0, new ServerOrder("HandshakeRequest", request.Serialize()).Serialize());
|
DispatchOrdersToClient(newConn, 0, 0, new ServerOrder("HandshakeRequest", request.Serialize()).Serialize());
|
||||||
}
|
}
|
||||||
@@ -376,11 +375,12 @@ namespace OpenRA.Server
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var ms = new MemoryStream();
|
var ms = new MemoryStream();
|
||||||
ms.Write( BitConverter.GetBytes( data.Length + 4 ) );
|
ms.Write(BitConverter.GetBytes(data.Length + 4));
|
||||||
ms.Write( BitConverter.GetBytes( client ) );
|
ms.Write(BitConverter.GetBytes(client));
|
||||||
ms.Write( BitConverter.GetBytes( frame ) );
|
ms.Write(BitConverter.GetBytes(frame));
|
||||||
ms.Write( data );
|
ms.Write(data);
|
||||||
c.socket.Send( ms.ToArray() );
|
c.socket.Send(ms.ToArray());
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
DropClient(c);
|
DropClient(c);
|
||||||
@@ -561,9 +561,9 @@ namespace OpenRA.Server
|
|||||||
|
|
||||||
Console.WriteLine("Game started");
|
Console.WriteLine("Game started");
|
||||||
|
|
||||||
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[] { 0xBF });
|
||||||
|
|
||||||
// Drop any unvalidated clients
|
// Drop any unvalidated clients
|
||||||
foreach (var c in preConns.ToArray())
|
foreach (var c in preConns.ToArray())
|
||||||
|
|||||||
Reference in New Issue
Block a user