示例#1
0
        private void IncrementServerUnreachable()
        {
            // If we've gotten too many in the last 2 wait period, then increase the wait time
            if (serverUnreachableErrorsLast2WaitPeriods >= 2)
            {
                if (serverUnreachableWaitSeconds <= ServerUnreachableMaxWaitSeconds)
                {
                    serverUnreachableWaitSeconds = (int)(serverUnreachableWaitSeconds * 1.5);
                    // want twice the wait period, and then twice that many seconds because it's ticked every 500ms
                    serverUnreachableCounter = new AggregateCounter(serverUnreachableWaitSeconds * 4);
                }
            }
            else if (serverUnreachableErrorsLast2WaitPeriods == 0 && serverUnreachableWaitSeconds != ServerUnreachableBaseWaitSeconds)
            {
                serverUnreachableWaitSeconds = ServerUnreachableBaseWaitSeconds;
                serverUnreachableCounter     = new AggregateCounter(serverUnreachableWaitSeconds * 4);
            }

            Interlocked.Increment(ref serverUnreachableErrors);
            serverUnreachableCounter.IncrementCounter();
            lastServerUnreachable = DateTime.Now;
        }
示例#2
0
        private void IncrementServerUnreachable()
        {
            // If we've gotten too many in the last 2 wait period, then increase the wait time
            if (serverUnreachableErrorsLast2WaitPeriods >= 2)
            {
                if (serverUnreachableWaitSeconds <= ServerUnreachableMaxWaitSeconds)
                {
                    serverUnreachableWaitSeconds = (int) (serverUnreachableWaitSeconds*1.5);
                    // want twice the wait period, and then twice that many seconds because it's ticked every 500ms
                    serverUnreachableCounter = new AggregateCounter(serverUnreachableWaitSeconds*4);
                }
            }
            else if (serverUnreachableErrorsLast2WaitPeriods == 0 && serverUnreachableWaitSeconds != ServerUnreachableBaseWaitSeconds)
            {
                serverUnreachableWaitSeconds = ServerUnreachableBaseWaitSeconds;
                serverUnreachableCounter = new AggregateCounter(serverUnreachableWaitSeconds*4);
            }

            Interlocked.Increment(ref serverUnreachableErrors);
            serverUnreachableCounter.IncrementCounter();
            lastServerUnreachable = DateTime.Now;
        }