Files
Ananta-ps/Ananta.Server/Ananta.App/GameSessionHub.cs
T

25 lines
642 B
C#
Raw Normal View History

using Ananta.SDK.Network;
namespace Ananta.Server.App;
internal sealed class GameSessionHub
{
private TcpSession? _current;
private long _lastSeenTicks;
internal TcpSession? Current => Volatile.Read(ref _current);
internal DateTimeOffset? LastSeenUtc
{
get
{
var ticks = Interlocked.Read(ref _lastSeenTicks);
return ticks == 0 ? null : new DateTimeOffset(ticks, TimeSpan.Zero);
}
}
internal void Touch(TcpSession session)
{
Volatile.Write(ref _current, session);
Interlocked.Exchange(ref _lastSeenTicks, DateTimeOffset.UtcNow.Ticks);
}
}