RUDPFramework/Assets/Scripts/Network/NetworkApplication/SessionReconnectPolicy.cs

49 lines
1.4 KiB
C#

using System;
namespace Network.NetworkApplication
{
public sealed class SessionReconnectPolicy
{
public static SessionReconnectPolicy Default { get; } = new(
heartbeatInterval: TimeSpan.FromSeconds(2),
heartbeatTimeout: TimeSpan.FromSeconds(6),
reconnectDelay: TimeSpan.FromSeconds(1),
autoReconnect: true);
public SessionReconnectPolicy(
TimeSpan heartbeatInterval,
TimeSpan heartbeatTimeout,
TimeSpan reconnectDelay,
bool autoReconnect)
{
if (heartbeatInterval <= TimeSpan.Zero)
{
throw new ArgumentOutOfRangeException(nameof(heartbeatInterval));
}
if (heartbeatTimeout <= TimeSpan.Zero)
{
throw new ArgumentOutOfRangeException(nameof(heartbeatTimeout));
}
if (reconnectDelay < TimeSpan.Zero)
{
throw new ArgumentOutOfRangeException(nameof(reconnectDelay));
}
HeartbeatInterval = heartbeatInterval;
HeartbeatTimeout = heartbeatTimeout;
ReconnectDelay = reconnectDelay;
AutoReconnect = autoReconnect;
}
public TimeSpan HeartbeatInterval { get; }
public TimeSpan HeartbeatTimeout { get; }
public TimeSpan ReconnectDelay { get; }
public bool AutoReconnect { get; }
}
}