2020-01-23 21:03:54 +01:00
|
|
|
|
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()
|
|
|
|
|
{
|
2020-01-27 17:25:45 +01:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var killables = Program.State.Servers.Values.Where(s =>
|
|
|
|
|
s.IsPrivate
|
|
|
|
|
&& !s.IsStarted
|
|
|
|
|
&& s.CurrentPlayers < 2
|
|
|
|
|
&& (DateTime.UtcNow - s.SpawnedAtUtc) > TimeSpan.FromMinutes(10));
|
2020-01-23 21:03:54 +01:00
|
|
|
|
|
2020-01-27 17:25:45 +01:00
|
|
|
|
foreach (var server in killables)
|
|
|
|
|
{
|
|
|
|
|
Process.GetProcessById(server.ProcessId).Kill();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
2020-01-23 21:03:54 +01:00
|
|
|
|
{
|
2020-01-27 17:25:45 +01:00
|
|
|
|
//Log...
|
2020-01-23 21:03:54 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|