MaxElapsedTimeModifier Class
- Namespace
- Kampute.Resilience.Strategies.Modifiers
- Assembly
- Kampute.Resilience.dll
Definition
A retry strategy that allows the retries of another retry strategy only within a time limit.
public sealed class MaxElapsedTimeModifier : IRetryStrategy- Inheritance
- object
- MaxElapsedTimeModifier
- Implements
Remarks
This class wraps another retry strategy and allows a retry only while the time elapsed since the start of retry attempts is less than MaxElapsedTime. A delay that would end after the limit is shortened to end at the limit. The limit does not cancel an operation that is running.
Constructors
MaxElapsedTimeModifier(IRetryStrategy, TimeSpan)
Initializes a new instance of the MaxElapsedTimeModifier class with a specified inner retry strategy and time limit.
public MaxElapsedTimeModifier(IRetryStrategy innerStrategy, TimeSpan maxElapsedTime)Parameters
innerStrategyIRetryStrategy- The retry strategy whose retries are limited.
maxElapsedTimeTimeSpan- The time since the start of retry attempts after which no further retry is allowed.
Exceptions
- ArgumentNullException
- Thrown if
innerStrategyisnull. - ArgumentOutOfRangeException
- Thrown if
maxElapsedTimeis negative.
Properties
InnerStrategy
Gets the retry strategy whose retries are limited.
public IRetryStrategy InnerStrategy { get; }Property Value
- IRetryStrategy
- The IRetryStrategy that decides the delays while the time limit has not been reached.
MaxElapsedTime
Gets the time since the start of retry attempts after which no further retry is allowed.
public TimeSpan MaxElapsedTime { get; }Property Value
- TimeSpan
- The time since the start of retry attempts after which no further retry is allowed.
Methods
TryGetRetryDelay(TimeSpan, uint, out TimeSpan)
Calculates the delay for the next retry attempt, enforcing the time limit.
public bool TryGetRetryDelay(TimeSpan elapsed, uint retryCount, out TimeSpan delay)Parameters
elapsedTimeSpan- The total time elapsed since the start of retry attempts.
retryCountuint- The number of retries made so far, not counting the initial attempt.
delayTimeSpan- When this method returns, contains the calculated delay for the next retry attempt. This parameter is passed uninitialized.
Returns
- bool
trueifelapsedis less than MaxElapsedTime and the inner strategy indicates that a retry should be attempted; otherwise,false.
Extension Methods
| Execute(this IRetryStrategy, Action<CancellationToken>, CancellationToken) | Runs a blocking operation and retries it as the strategy decides when it throws an exception. |
| Execute<T>(this IRetryStrategy, Func<CancellationToken, T>, CancellationToken) | Runs a blocking operation that returns a value and retries it as the strategy decides when it throws an exception. |
| Execute<TState>(this IRetryStrategy, TState, Action<TState, CancellationToken>, CancellationToken) | Runs a blocking operation that receives a state, and retries it as the strategy decides when it throws an exception. |
| Execute<TState, T>(this IRetryStrategy, TState, Func<TState, CancellationToken, T>, CancellationToken) | Runs a blocking operation that receives a state and returns a value, and retries it as the strategy decides when it throws an exception. |
| ExecuteAsync(this IRetryStrategy, Func<CancellationToken, Task>, CancellationToken) | Runs an asynchronous operation and retries it as the strategy decides when it throws an exception. |
| ExecuteAsync<T>(this IRetryStrategy, Func<CancellationToken, Task<T>>, CancellationToken) | Runs an asynchronous operation that returns a value and retries it as the strategy decides when it throws an exception. |
| ExecuteAsync<TState>(this IRetryStrategy, TState, Func<TState, CancellationToken, Task>, CancellationToken) | Runs an asynchronous operation that receives a state, and retries it as the strategy decides when it throws an exception. |
| ExecuteAsync<TState, T>(this IRetryStrategy, TState, Func<TState, CancellationToken, Task<T>>, CancellationToken) | Runs an asynchronous operation that receives a state and returns a value, and retries it as the strategy decides when it throws an exception. |
| OnRetry(this IRetryStrategy, Action<RetryContext>) | Creates a retry policy that retries every exception and invokes a handler for each approved retry. |
| OverrideDelay(this IRetryStrategy, Func<RetryContext, TimeSpan>) | Creates a retry policy that retries every exception, replacing the strategy's delay with one computed from the failed attempt. |
| RetryOn<TException>(this IRetryStrategy) | Creates a retry policy that retries the exceptions of the specified type as the strategy decides. |
| RetryOn(this IRetryStrategy, Func<Exception, bool>) | Creates a retry policy that retries the exceptions that satisfy a condition, as the strategy decides. |
| RetryOn<TException>(this IRetryStrategy, Func<TException, bool>) | Creates a retry policy that retries the exceptions of the specified type that satisfy a condition, as the strategy decides. |
| RetryOnResult<T>(this IRetryStrategy, Func<T, bool>) | Creates a retry policy for operations returning T that retries every exception and the results that satisfy a condition, as the strategy decides. |
| StartSession(this IRetryStrategy) | Starts a retry session for one operation that the strategy governs. |
| WithJitter(this IRetryStrategy, double) | Adds random jitter to the delays of a retry strategy. |
| WithMaxDelay(this IRetryStrategy, TimeSpan) | Caps each delay of a retry strategy. |
| WithMaxDelay(this IRetryStrategy, int) | Caps each delay of a retry strategy at a number of milliseconds. |
| WithMaxElapsedTime(this IRetryStrategy, TimeSpan) | Limits the time during which a retry strategy allows retries. |
| WithMaxElapsedTime(this IRetryStrategy, int) | Limits the time, in milliseconds, during which a retry strategy allows retries. |
| WithMaxRetries(this IRetryStrategy, uint) | Limits the number of retries a retry strategy allows. |
