Discord-History-Tracker/app/Server/State.cs

32 lines
839 B
C#

using System;
using System.Threading.Tasks;
using DHT.Server.Database;
using DHT.Server.Download;
using DHT.Server.Service;
using DHT.Server.Service.Viewer;
namespace DHT.Server;
public sealed class State : IAsyncDisposable {
public static State Dummy { get; } = new (DummyDatabaseFile.Instance, null);
public IDatabaseFile Db { get; }
public Downloader Downloader { get; }
public ViewerSessions ViewerSessions { get; }
public ServerManager Server { get; }
public State(IDatabaseFile db, int? concurrentDownloads) {
Db = db;
Downloader = new Downloader(db, concurrentDownloads);
ViewerSessions = new ViewerSessions();
Server = new ServerManager(db, ViewerSessions);
}
public async ValueTask DisposeAsync() {
await Downloader.Stop();
await Server.Stop();
await Db.DisposeAsync();
ViewerSessions.Dispose();
}
}