NBloodServerSupervisor/Supervisor/PrivateServerManager.cs
2020-01-23 21:03:54 +01:00

40 lines
996 B
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
namespace Supervisor
{
static class PrivateServerManager
{
public static void Start()
{
Task.Factory.StartNew(() =>
{
while (true)
{
Thread.Sleep(TimeSpan.FromSeconds(2));
KillUnusedServers();
}
});
}
private static void KillUnusedServers()
{
var killables = Program.State.Servers.Values.Where(s =>
s.IsPrivate
&& !s.IsStarted
&& s.CurrentPlayers < 2
&& (DateTime.UtcNow - s.SpawnedAtUtc) > TimeSpan.FromMinutes(10));
foreach (var server in killables)
{
Process.GetProcessById(server.ProcessId).Kill();
}
}
}
}