private async Task DiscoverProcesses() { var armaProcesses = await _armaProcessDiscoverer.DiscoverArmaProcesses(); foreach (var serverKeyValuePair in armaProcesses) { var(port, processes) = serverKeyValuePair; var server = processes.SingleOrDefault(x => x.ProcessType == ArmaProcessType.Server); var headlessClients = processes.Where(x => x.ProcessType == ArmaProcessType.HeadlessClient); if (server is null) { _logger.LogDebug("Server not found on port {Port}. Shutting down headless clients for server on this port", port); foreach (var headlessClient in headlessClients) { headlessClient.Shutdown(); } _logger.LogDebug("Headless clients for server on port {Port} were shut down", port); continue; } var dedicatedServer = CreateServer( port, // TODO: Handle the result of GetModsetByName (await _modsetProvider.GetModsetByName(server.Parameters.ModsetName)).Value, server, headlessClients); dedicatedServer.OnServerShutdown += OnServerDisposed; _servers.GetOrAdd(port, dedicatedServer); } }
// TODO: Add port public async Task <Result> StartServer(string modsetName, CancellationToken cancellationToken) { return(await _modsetProvider.GetModsetByName(modsetName) .Bind(modset => StartServer(modset, cancellationToken))); }
public async Task <Result> UpdateModset(string modsetName, CancellationToken cancellationToken) { return(await _modsetProvider.GetModsetByName(modsetName) .Bind(x => UpdateModset(x, cancellationToken))); }