private Result CopyNewKeys(IModset modset) { var clientLoadableMods = modset.ClientLoadableMods; if (clientLoadableMods.IsEmpty()) { _logger.LogInformation("No client loadable mods found in modset {ModsetName}", modset.Name); } var modBikeysList = new List <ModBikeys>(); foreach (var mod in clientLoadableMods) { CopyKeysForMod(mod) .Tap(modBikeys => modBikeysList.Add(modBikeys)) .OnFailure(error => LogKeysCopyError(mod, error)) .OnFailure(_ => modBikeysList.Add(new ModBikeys(mod))); } _logger.LogInformation( "Copied {Count} keys for modset {ModsetName}", modBikeysList.Sum(x => x.BikeyFiles.Count), modset.Name); LogKeysNotFound(modBikeysList); return(Result.Success()); }
public DedicatedServerTests() { _modset = ModsetHelpers.CreateTestModset(_fixture); _modsetConfigMock .Setup(x => x.CopyConfigFiles()) .Returns(Result.Success); }
private IDedicatedServer CreateServer(int port, IModset modset, int numberOfHeadlessClients) { var server = _dedicatedServerFactory.CreateDedicatedServer(port, modset, numberOfHeadlessClients); server.OnServerShutdown += OnServerDisposed; return(server); }
public HeadlessParametersProvider( int port, IModset modset, IModsetConfig modsetConfig) { _port = port; _modset = modset; _modsetConfig = modsetConfig; }
public ServerParametersProvider( int port, IModset modset, IModsetConfig modsetConfig) { _port = port; _modset = modset; _modsetConfig = modsetConfig; }
// TODO: Add port public async Task <Result> StartServer(IModset modset, CancellationToken cancellationToken) { return(await ShutdownServer( Port, false, cancellationToken) //.Bind(() => _modsUpdateService.UpdateModset(modset, cancellationToken)) .Bind(() => _serverProvider.GetServer(Port, modset).Start())); }
public IDedicatedServer CreateDedicatedServer( int port, IModset modset, int numberOfHeadlessClients) { var builder = _serverBuilderFactory.CreateServerBuilder(); return(builder .OnPort(port) .WithModset(modset) .WithHeadlessClients(numberOfHeadlessClients) .Build()); }
public IArmaProcess CreateServerProcess( int port, IModset modset, IModsetConfig modsetConfig) { var parametersProvider = new ServerParametersProvider( port, modset, modsetConfig); return(new ArmaProcess( parametersProvider.GetStartupParams(_settings.ServerExecutable !), _serverProcessLogger)); }
private IDedicatedServer CreateServer( int port, IModset modset, IArmaProcess armaProcess, IEnumerable <IArmaProcess>?headlessClients = null) { var server = _dedicatedServerFactory.CreateDedicatedServer( port, modset, armaProcess, headlessClients); return(server); }
public IDedicatedServer CreateDedicatedServer( int port, IModset modset, IArmaProcess armaProcess, IEnumerable <IArmaProcess>?headlessProcesses = null) { var builder = _serverBuilderFactory.CreateServerBuilder(); return(builder .OnPort(port) .WithModset(modset) .WithServerProcess(armaProcess) .WithHeadlessClients(headlessProcesses) .Build()); }
public IDedicatedServer GetServer(int port, IModset modset) { var server = _servers.GetOrAdd( port, serverPort => CreateServer( serverPort, modset, 1)); return(server.Modset.Equals(modset) ? server // TODO: Think of better exception type here : throw new ServerMismatchException( $"Expected to get server with {modset.Name} modset with {modset.Mods.Count} mods on port {port} but found {server.Modset.Name} with {server.Modset.Mods.Count} mods.")); }
public IEnumerable <IArmaProcess> CreateHeadlessClients( int port, IModset modset, IModsetConfig modsetConfig, int numberOfHeadlessClients = 1) { var parametersProvider = new HeadlessParametersProvider( port, modset, modsetConfig); for (var i = 0; i < numberOfHeadlessClients; i++) { yield return(new ArmaProcess( parametersProvider.GetStartupParams(_settings.ServerExecutable !), _serverProcessLogger)); } }
public DedicatedServer( int port, IModset modset, IModsetConfig modsetConfig, IServerStatusFactory serverStatusFactory, IKeysPreparer keysPreparer, IArmaProcessManager armaProcessManager, IArmaProcess armaProcess, IEnumerable <IArmaProcess> headlessClients, ILogger <DedicatedServer> logger) { Port = port; SteamQueryPort = port + 1; _keysPreparer = keysPreparer; _armaProcessManager = armaProcessManager; Modset = modset; _modsetConfig = modsetConfig; _serverStatusFactory = serverStatusFactory; _armaProcess = InitializeArmaProcess(armaProcess); _headlessProcesses = headlessClients.ToList(); _logger = logger; }
public Result PrepareKeysForModset(IModset modset) => RemoveOldKeys() .Bind(() => CopyNewKeys(modset)) .Bind(CopyArmaKey);
public TestDedicatedServer(IModset modset) { Modset = modset; }
/// <inheritdoc /> public async Task <Result> PrepareModset(IModset modset, CancellationToken cancellationToken) => await CheckUpdatesAndDownloadMods(modset.ActiveMods, cancellationToken) .Tap(() => _logger.LogInformation("Preparation of {ModsetName} modset finished", modset.Name));
public IServerBuilder WithModset(IModset modset) { _modset = modset; return(this); }
public async Task <Result> UpdateModset(IModset modset, CancellationToken cancellationToken) { return(await _modsManager.PrepareModset(modset, cancellationToken)); }