/// <summary> /// Queue initial heartbeats to active servers /// </summary> public void QueueInitialHeartbeats() { DateTime Now = DateTime.UtcNow; uint HeartbeatsStarted = 0; lock (ActiveServerTable) { foreach (var Pair in ActiveServerTable) { NWGameServer Server = Pair.Value; lock (Server) { if (!Server.Online) { continue; } Server.InitialHeartbeat = true; Server.StartHeartbeat(); HeartbeatsStarted += 1; } } } Logger.Log(LogLevel.Normal, "NWServerTracker.QueueInitialHeartbeats(): Queued {0} initial server heartbeat requests.", HeartbeatsStarted); PendingGameServersSweepTimer.Start(); ScavengerSweepTimer.Start(); BlacklistSweepTimer.Start(); }
/// <summary> /// This timer callback runs when the blacklist sweep timer elapses. /// Its purpose is to trigger a periodic refresh of the blacklist from /// the database. /// </summary> /// <param name="sender">Unused.</param> /// <param name="e">Unused.</param> private void BlacklistSweepTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { try { RefreshBlacklist(); } catch (Exception ex) { Logger.Log(LogLevel.Error, "NWServerTracker.BlacklistSweepTimer_Elapsed(): Exception refreshing blacklist: {0}", ex); } lock (HeartbeatLock) { if (!HeartbeatsEnabled) { return; } BlacklistSweepTimer.Start(); } }