public SqlRetryLogic(int numberOfTries, SqlRetryIntervalBaseEnumerator enumerator, Predicate <Exception> transientPredicate, Predicate <string> preCondition) { Debug.Assert(enumerator != null, $"The '{nameof(enumerator)}' mustn't be null."); Debug.Assert(transientPredicate != null, $"The '{nameof(transientPredicate)}' mustn't be null."); if (!(numberOfTries > counterDefaultValue && numberOfTries <= maxAttempts)) { // The 'numberOfTries' should be between 1 and 60. throw SqlReliabilityUtil.ArgumentOutOfRange(nameof(numberOfTries), numberOfTries, counterDefaultValue + 1, maxAttempts); } NumberOfTries = numberOfTries; RetryIntervalEnumerator = enumerator; TransientPredicate = transientPredicate; PreCondition = preCondition; Current = counterDefaultValue; }
/// <include file='../../../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlRetryIntervalBaseEnumerator.xml' path='docs/members[@name="SqlRetryIntervalBaseEnumerator"]/Validate/*' /> protected virtual void Validate(TimeSpan timeInterval, TimeSpan maxTimeInterval, TimeSpan minTimeInterval) { if (minTimeInterval < _minValue || minTimeInterval > _maxValue) { throw SqlReliabilityUtil.ArgumentOutOfRange(nameof(minTimeInterval), minTimeInterval, _minValue, _maxValue); } if (maxTimeInterval < _minValue || maxTimeInterval > _maxValue) { throw SqlReliabilityUtil.ArgumentOutOfRange(nameof(maxTimeInterval), maxTimeInterval, _minValue, _maxValue); } if (timeInterval < _minValue || timeInterval > _maxValue) { throw SqlReliabilityUtil.ArgumentOutOfRange(nameof(timeInterval), timeInterval, _minValue, _maxValue); } if (maxTimeInterval < minTimeInterval) { throw SqlReliabilityUtil.InvalidMinAndMaxPair(nameof(minTimeInterval), minTimeInterval, nameof(maxTimeInterval), maxTimeInterval); } }