using Microsoft.Extensions.DependencyInjection; using Phantom.Common.Data.Agent; using Phantom.Server.Minecraft; using Phantom.Server.Services; using Phantom.Server.Services.Agents; using Phantom.Server.Services.Audit; using Phantom.Server.Services.Events; using Phantom.Server.Services.Instances; using Phantom.Server.Services.Rpc; using Phantom.Utils.Tasks; using WebLauncher = Phantom.Server.Web.Launcher; namespace Phantom.Server; sealed class WebConfigurator : WebLauncher.IConfigurator { private readonly ServiceConfiguration serviceConfiguration; private readonly TaskManager taskManager; private readonly AgentAuthToken agentToken; public WebConfigurator(ServiceConfiguration serviceConfiguration, TaskManager taskManager, AgentAuthToken agentToken) { this.serviceConfiguration = serviceConfiguration; this.taskManager = taskManager; this.agentToken = agentToken; } public void ConfigureServices(IServiceCollection services) { services.AddSingleton(serviceConfiguration); services.AddSingleton(taskManager); services.AddSingleton(agentToken); services.AddSingleton<AgentManager>(); services.AddSingleton<AgentJavaRuntimesManager>(); services.AddSingleton<EventLog>(); services.AddSingleton<InstanceManager>(); services.AddSingleton<InstanceLogManager>(); services.AddSingleton<MinecraftVersions>(); services.AddSingleton<MessageToServerListenerFactory>(); services.AddScoped<AuditLog>(); } public async Task LoadFromDatabase(IServiceProvider serviceProvider) { await serviceProvider.GetRequiredService<AgentManager>().Initialize(); await serviceProvider.GetRequiredService<InstanceManager>().Initialize(); } }