using System; using System.Net; namespace Server.Net { public abstract class BaseSession : IDisposable { public long Id { get; set; } public TService Service { get; set; } public long LastRecvTime { get; set; } public long LastSendTime { get; set; } public int Error { get; set; } public IPEndPoint RemoteAddress { get; set; } protected readonly Action Disposed; public BaseSession(long id, TService service, Action disposedAction) { this.Id = id; this.Service = service; this.Disposed = disposedAction; } public virtual void Dispose() { this.Service.Remove(Id); Disposed?.Invoke(Id); } } }