halve bandwidth usage
This commit is contained in:
@@ -55,7 +55,7 @@ namespace OpenRA.Network
|
|||||||
get { return ConnectionState.PreConnecting; }
|
get { return ConnectionState.PreConnecting; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public 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 ) );
|
||||||
@@ -64,7 +64,7 @@ namespace OpenRA.Network
|
|||||||
Send( ms.ToArray() );
|
Send( ms.ToArray() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public 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 ) );
|
||||||
@@ -73,7 +73,7 @@ namespace OpenRA.Network
|
|||||||
Send( ms.ToArray() );
|
Send( ms.ToArray() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public 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 ) );
|
||||||
@@ -157,6 +157,16 @@ namespace OpenRA.Network
|
|||||||
public override int LocalClientId { get { return clientId; } }
|
public override int LocalClientId { get { return clientId; } }
|
||||||
public override ConnectionState ConnectionState { get { return connectionState; } }
|
public override ConnectionState ConnectionState { get { return connectionState; } }
|
||||||
|
|
||||||
|
List<byte[]> queuedSyncPackets = new List<byte[]>();
|
||||||
|
|
||||||
|
public override void SendSync( int frame, byte[] syncData )
|
||||||
|
{
|
||||||
|
var ms = new MemoryStream();
|
||||||
|
ms.Write( BitConverter.GetBytes( frame ) );
|
||||||
|
ms.Write( syncData );
|
||||||
|
queuedSyncPackets.Add( ms.ToArray() );
|
||||||
|
}
|
||||||
|
|
||||||
protected override void Send( byte[] packet )
|
protected override void Send( byte[] packet )
|
||||||
{
|
{
|
||||||
base.Send( packet );
|
base.Send( packet );
|
||||||
@@ -166,6 +176,12 @@ namespace OpenRA.Network
|
|||||||
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 )
|
||||||
|
{
|
||||||
|
ms.Write( BitConverter.GetBytes( (int)q.Length ) );
|
||||||
|
ms.Write( q );
|
||||||
|
}
|
||||||
|
queuedSyncPackets.Clear();
|
||||||
ms.WriteTo(socket.GetStream());
|
ms.WriteTo(socket.GetStream());
|
||||||
}
|
}
|
||||||
catch (SocketException) { /* drop this on the floor; we'll pick up the disconnect from the reader thread */ }
|
catch (SocketException) { /* drop this on the floor; we'll pick up the disconnect from the reader thread */ }
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
|
Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
|
||||||
|
|
||||||
void CheckSync(byte[] packet)
|
void CheckSync( byte[] packet )
|
||||||
{
|
{
|
||||||
var frame = BitConverter.ToInt32(packet, 0);
|
var frame = BitConverter.ToInt32(packet, 0);
|
||||||
byte[] existingSync;
|
byte[] existingSync;
|
||||||
@@ -173,8 +173,6 @@ namespace OpenRA.Network
|
|||||||
|
|
||||||
syncReport.UpdateSyncReport();
|
syncReport.UpdateSyncReport();
|
||||||
|
|
||||||
CheckSync( ss );
|
|
||||||
|
|
||||||
++NetFrameNumber;
|
++NetFrameNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user