public static PlanetWarsServerSettings ForMode(PlanetWarsServerMode pwsMode)
        {
            var infiniteTimeout   = Timeout.InfiniteTimeSpan;
            var largeTimeout      = TimeSpan.FromMinutes(30);
            var extraLargeTimeout = TimeSpan.FromDays(1);

            switch (pwsMode)
            {
            case PlanetWarsServerMode.Local:
                return(new PlanetWarsServerSettings(pwsMode)
                {
                    JoinTimeout = infiniteTimeout,
                    StartTimeout = infiniteTimeout,
                    TotalCommandsTimeout = infiniteTimeout,
                    CommandsTimeout = infiniteTimeout,
                    GameExpirationTimeout = infiniteTimeout,
                    LongPollingTimeout = infiniteTimeout,
                });

            case PlanetWarsServerMode.Online:
                return(new PlanetWarsServerSettings(pwsMode)
                {
                    JoinTimeout = largeTimeout,
                    StartTimeout = largeTimeout,
                    TotalCommandsTimeout = infiniteTimeout,
                    CommandsTimeout = largeTimeout,
                    GameExpirationTimeout = extraLargeTimeout,
                    LongPollingTimeout = LongPollingKeepAliveTimeout,
                });

            default:
                throw new InvalidOperationException($"Invalid PlanetWarsServerMode: {pwsMode}");
            }
        }
 private PlanetWarsServerSettings(PlanetWarsServerMode pwsMode)
 {
     PwsMode = pwsMode;
 }