mirror of
https://github.com/chylex/Discord-History-Tracker.git
synced 2024-11-24 20:42:46 +01:00
51 lines
1.0 KiB
C#
51 lines
1.0 KiB
C#
using System;
|
|
using DHT.Server.Database;
|
|
using DHT.Server.Service;
|
|
|
|
namespace DHT.Desktop.Server;
|
|
|
|
sealed class ServerManager : IDisposable {
|
|
public static ushort Port { get; set; } = ServerUtils.FindAvailablePort(50000, 60000);
|
|
public static string Token { get; set; } = ServerUtils.GenerateRandomToken(20);
|
|
|
|
private static ServerManager? instance;
|
|
|
|
public bool IsRunning => ServerLauncher.IsRunning;
|
|
|
|
private readonly IDatabaseFile db;
|
|
|
|
public ServerManager(IDatabaseFile db) {
|
|
if (db != DummyDatabaseFile.Instance) {
|
|
if (instance != null) {
|
|
throw new InvalidOperationException("Only one instance of ServerManager can exist at the same time!");
|
|
}
|
|
|
|
instance = this;
|
|
}
|
|
|
|
this.db = db;
|
|
}
|
|
|
|
public void Launch() {
|
|
ServerLauncher.Relaunch(Port, Token, db);
|
|
}
|
|
|
|
public void Relaunch(ushort port, string token) {
|
|
Port = port;
|
|
Token = token;
|
|
Launch();
|
|
}
|
|
|
|
public void Stop() {
|
|
ServerLauncher.Stop();
|
|
}
|
|
|
|
public void Dispose() {
|
|
Stop();
|
|
|
|
if (instance == this) {
|
|
instance = null;
|
|
}
|
|
}
|
|
}
|