internal static void KeepAlive() { Timer Timer = new Timer { Interval = 60000, AutoReset = true }; Timer.Elapsed += (_Sender, _Args) => { var numDisc = 0; #if DEBUG Logger.SayInfo("KeepAlive executed at " + DateTime.Now.ToString("T") + "."); #endif var clients = ResourcesManager.GetConnectedClients(); foreach (var client in clients) { if (DateTime.Now > client.NextKeepAlive) { ResourcesManager.DropClient(client.GetSocketHandle()); numDisc++; } } #if DEBUG if (numDisc > 0) { Logger.SayInfo($"KeepAlive dropped {numDisc} clients due to keep alive timeouts at " + DateTime.Now.ToString("T") + "."); } #endif Logger.SayInfo("#" + DateTime.Now.ToString("d") + " ---- Pools ---- " + DateTime.Now.ToString("T") + " #"); Logger.SayInfo($"SocketAsyncEventArgs: created -> {Gateway.NumberOfArgsCreated} in-use -> {Gateway.NumberOfArgsInUse} available -> {Gateway.NumberOfArgs}."); Logger.SayInfo($"Buffers: created -> {Gateway.NumberOfBuffersCreated} in-use -> {Gateway.NumberOfBuffersInUse} available -> {Gateway.NumberOfBuffers}."); }; LTimers.Add(Logic.Enums.Timer.Keep_Alive, Timer); }