private async Task OnServerDisposed(IDedicatedServer dedicatedServer) { _logger.LogDebug( "Server with {ModsetName} disposed on port {Port}, removing", dedicatedServer.Modset.Name, dedicatedServer.Port); TryRemoveServer(dedicatedServer); }
private Result TryRemoveServer(IDedicatedServer dedicatedServer) { var server = GetServer(dedicatedServer.Port); if (server == dedicatedServer) { _ = _servers.TryRemove(dedicatedServer.Port, out _); _logger.LogDebug("Server removed on port {Port}", dedicatedServer.Port); return(Result.Success()); } _logger.LogDebug("Server not removed on port {Port}. Other server is already running", dedicatedServer.Port); return(Result.Failure($"Other server is already running on port {dedicatedServer.Port}.")); }
public async Task <ServerStatus> GetServerStatus(IDedicatedServer dedicatedServer, CancellationToken cancellationToken) { var ipEndPoint = new IPEndPoint(IPAddress.Loopback, dedicatedServer.SteamQueryPort); var serverInfo = await A2SInfo.GetServerInfoAsync(ipEndPoint, cancellationToken, _logger); return(new ServerStatus( GetServerStatusEnum(dedicatedServer, serverInfo), serverInfo?.Name, dedicatedServer?.Modset.Name, serverInfo?.Map, serverInfo?.Players, serverInfo?.MaxPlayers, dedicatedServer?.Port, dedicatedServer?.StartTime, dedicatedServer?.HeadlessClientsConnected)); }