mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2025-06-02 04:34:03 +02:00
78 lines
3.4 KiB
C#
78 lines
3.4 KiB
C#
using Phantom.Common.Data;
|
|
using Phantom.Common.Messages.Agent;
|
|
using Phantom.Common.Messages.Web;
|
|
using Phantom.Controller.Database;
|
|
using Phantom.Controller.Minecraft;
|
|
using Phantom.Controller.Services.Agents;
|
|
using Phantom.Controller.Services.Events;
|
|
using Phantom.Controller.Services.Instances;
|
|
using Phantom.Controller.Services.Rpc;
|
|
using Phantom.Controller.Services.Users;
|
|
using Phantom.Utils.Logging;
|
|
using Phantom.Utils.Rpc.Runtime;
|
|
using Phantom.Utils.Tasks;
|
|
|
|
namespace Phantom.Controller.Services;
|
|
|
|
public sealed class ControllerServices {
|
|
private TaskManager TaskManager { get; }
|
|
private MinecraftVersions MinecraftVersions { get; }
|
|
|
|
private AgentManager AgentManager { get; }
|
|
private AgentJavaRuntimesManager AgentJavaRuntimesManager { get; }
|
|
private InstanceManager InstanceManager { get; }
|
|
private InstanceLogManager InstanceLogManager { get; }
|
|
private EventLogManager EventLogManager { get; }
|
|
|
|
private UserManager UserManager { get; }
|
|
private RoleManager RoleManager { get; }
|
|
private PermissionManager PermissionManager { get; }
|
|
|
|
private UserRoleManager UserRoleManager { get; }
|
|
private UserLoginManager UserLoginManager { get; }
|
|
private AuditLogManager AuditLogManager { get; }
|
|
|
|
private readonly IDbContextProvider dbProvider;
|
|
private readonly AuthToken webAuthToken;
|
|
private readonly CancellationToken cancellationToken;
|
|
|
|
public ControllerServices(IDbContextProvider dbProvider, AuthToken agentAuthToken, AuthToken webAuthToken, CancellationToken shutdownCancellationToken) {
|
|
this.TaskManager = new TaskManager(PhantomLogger.Create<TaskManager, ControllerServices>());
|
|
this.MinecraftVersions = new MinecraftVersions();
|
|
|
|
this.AgentManager = new AgentManager(agentAuthToken, dbProvider, TaskManager, shutdownCancellationToken);
|
|
this.AgentJavaRuntimesManager = new AgentJavaRuntimesManager();
|
|
this.InstanceManager = new InstanceManager(AgentManager, MinecraftVersions, dbProvider, shutdownCancellationToken);
|
|
this.InstanceLogManager = new InstanceLogManager();
|
|
|
|
this.UserManager = new UserManager(dbProvider);
|
|
this.RoleManager = new RoleManager(dbProvider);
|
|
this.PermissionManager = new PermissionManager(dbProvider);
|
|
|
|
this.UserRoleManager = new UserRoleManager(dbProvider);
|
|
this.UserLoginManager = new UserLoginManager(UserManager, PermissionManager);
|
|
this.AuditLogManager = new AuditLogManager(dbProvider);
|
|
this.EventLogManager = new EventLogManager(dbProvider, TaskManager, shutdownCancellationToken);
|
|
|
|
this.dbProvider = dbProvider;
|
|
this.webAuthToken = webAuthToken;
|
|
this.cancellationToken = shutdownCancellationToken;
|
|
}
|
|
|
|
public AgentMessageListener CreateAgentMessageListener(RpcConnectionToClient<IMessageToAgentListener> connection) {
|
|
return new AgentMessageListener(connection, AgentManager, AgentJavaRuntimesManager, InstanceManager, InstanceLogManager, EventLogManager, cancellationToken);
|
|
}
|
|
|
|
public WebMessageListener CreateWebMessageListener(RpcConnectionToClient<IMessageToWebListener> connection) {
|
|
return new WebMessageListener(connection, webAuthToken, UserManager, RoleManager, UserRoleManager, UserLoginManager, AuditLogManager, AgentManager, AgentJavaRuntimesManager, InstanceManager, InstanceLogManager, MinecraftVersions, EventLogManager, TaskManager);
|
|
}
|
|
|
|
public async Task Initialize() {
|
|
await DatabaseMigrator.Run(dbProvider, cancellationToken);
|
|
await PermissionManager.Initialize();
|
|
await RoleManager.Initialize();
|
|
await AgentManager.Initialize();
|
|
await InstanceManager.Initialize();
|
|
}
|
|
}
|