1
0
mirror of https://github.com/lidgren/lidgren-network-gen3.git synced 2026-05-15 14:46:29 +09:00
Files
lidgren-network-gen3/Lidgren.Network/NetSending.cs
lidgren e38bdfeab6 Changed return value of SendMessage to bool for consistency
Added a number of verbose debug messages (to be removed later)
2010-09-12 20:00:12 +00:00

56 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Net;
using System.Diagnostics;
namespace Lidgren.Network
{
[DebuggerDisplay("MessageType={MessageType} SequenceNumber={SequenceNumber} NumSends={NumSends}")]
internal sealed class NetSending
{
public NetOutgoingMessage Message;
public IPEndPoint Recipient;
public NetMessageType MessageType;
public ushort SequenceNumber;
public double NextResend;
public int NumSends; // how many times has this sending been sent
public int FragmentGroupId;
public int FragmentNumber;
public int FragmentTotalCount;
public NetSending(NetOutgoingMessage msg, NetMessageType tp, ushort sequenceNumber)
{
Message = msg;
MessageType = tp;
SequenceNumber = sequenceNumber;
}
internal void SetNextResend(NetConnection conn)
{
float baseDelay;
switch(NumSends)
{
case 0: baseDelay = 0.025f; break;
case 1: baseDelay = 0.05f; break;
case 2: baseDelay = 0.15f; break;
case 3: baseDelay = 0.3f; break;
default:
baseDelay = (float)(NumSends - 3); // 4: 1 second, 5: 2 seconds, 6: 3 seconds etc
break;
}
float rttMultiplier = 1.15f + (0.15f * NumSends);
float totalDelay = baseDelay + (conn.AverageRoundtripTime * rttMultiplier);
NextResend = NetTime.Now + totalDelay;
}
public override string ToString()
{
return "[NetSending " + MessageType + "#" + SequenceNumber + " NumSends: " + NumSends + "]";
}
}
}