Exemplo n.º 1
0
        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);
        }