Table of Contents

Class LimitedDurationStrategyModifier

Namespace
Kampute.HttpClient.RetryManagement.Strategies.Modifiers
Assembly
Kampute.HttpClient.dll

A retry strategy that limits the retry attempts to a specified time frame.

public sealed class LimitedDurationStrategyModifier : IRetryStrategy
Inheritance
LimitedDurationStrategyModifier
Implements
Inherited Members
Extension Methods

Remarks

This class wraps another retry strategy and enforces a total time limit for retries. It ensures that the total elapsed time does not exceed the specified timeout before suggesting another retry attempt.

Constructors

LimitedDurationStrategyModifier(IRetryStrategy, TimeSpan)

Initializes a new instance of the LimitedDurationStrategyModifier class with a specified source retry strategy and timeout duration.

public LimitedDurationStrategyModifier(IRetryStrategy source, TimeSpan timeout)

Parameters

source IRetryStrategy

The underlying retry strategy.

timeout TimeSpan

The maximum duration to continue attempting retries before giving up.

Exceptions

ArgumentNullException

Thrown if source is null.

Properties

Source

Gets the underlying retry strategy, to which the specified timeout duration is applied as a limit for the total retry attempts.

public IRetryStrategy Source { get; }

Property Value

IRetryStrategy

The underlying IRetryStrategy, to which the specified timeout duration is applied as a limit for the total retry attempts.

Timeout

Gets the maximum duration to continue attempting retries before giving up.

public TimeSpan Timeout { get; }

Property Value

TimeSpan

The maximum duration to continue attempting retries before giving up.

Methods

TryGetRetryDelay(TimeSpan, uint, out TimeSpan)

Calculates the delay for the next retry attempt, enforcing the timeout limit.

public bool TryGetRetryDelay(TimeSpan elapsed, uint attempts, out TimeSpan delay)

Parameters

elapsed TimeSpan

The total time elapsed since the start of retry attempts.

attempts uint

The number of retry attempts made so far.

delay TimeSpan

When this method returns, contains the calculated delay for the next retry attempt. This parameter is passed uninitialized.

Returns

bool

true if the total elapsed time is within the specified timeout and the underlying strategy indicates that a retry should be attempted; otherwise, false.