ServiceStack.Redis.RedisPubSubServer.SleepBackOffMultiplier C# (CSharp) Method

SleepBackOffMultiplier() private method

private SleepBackOffMultiplier ( int continuousErrorsCount ) : void
continuousErrorsCount int
return void
        private void SleepBackOffMultiplier(int continuousErrorsCount)
        {
            if (continuousErrorsCount == 0) return;
            const int MaxSleepMs = 60 * 1000;

            //exponential/random retry back-off.
            var nextTry = Math.Min(
                rand.Next((int)Math.Pow(continuousErrorsCount, 3), (int)Math.Pow(continuousErrorsCount + 1, 3) + 1),
                MaxSleepMs);

            if (Log.IsDebugEnabled)
                Log.Debug("Sleeping for {0}ms after {1} continuous errors".Fmt(nextTry, continuousErrorsCount));

            TaskUtils.Sleep(nextTry);
        }