pub struct LimitedElapsedTime<P = Aip194Strict>where
P: RetryPolicy,{ /* private fields */ }Expand description
A retry policy decorator that limits the total time in the retry loop.
This policy decorates an inner policy and limits the duration of retry
loops. While the time spent in the retry loop (including time in backoff)
is less than the prescribed duration the on_error() method returns the
results of the inner policy. After that time it returns
Exhausted if the inner policy returns
Continue.
The remaining_time() function returns the remaining time. This is always
Duration::ZERO once or after the policy’s
deadline is reached.
§Parameters
P- the inner retry policy, defaults to Aip194Strict.
Implementations§
Source§impl LimitedElapsedTime
impl LimitedElapsedTime
Sourcepub fn new(maximum_duration: Duration) -> Self
pub fn new(maximum_duration: Duration) -> Self
Creates a new instance, with the default inner policy.
§Example
fn customize_retry_policy(builder: impl RequestOptionsBuilder) -> impl RequestOptionsBuilder {
builder.with_retry_policy(LimitedElapsedTime::new(std::time::Duration::from_secs(10)))
}§Example
let d = std::time::Duration::from_secs(10);
let policy = LimitedElapsedTime::new(d);
assert!(policy.remaining_time(std::time::Instant::now(), 0) <= Some(d));Source§impl<P> LimitedElapsedTime<P>where
P: RetryPolicy,
impl<P> LimitedElapsedTime<P>where
P: RetryPolicy,
Sourcepub fn custom(inner: P, maximum_duration: Duration) -> Self
pub fn custom(inner: P, maximum_duration: Duration) -> Self
Creates a new instance with a custom inner policy.
§Example
fn customize_retry_policy(builder: impl RequestOptionsBuilder) -> impl RequestOptionsBuilder {
builder.with_retry_policy(LimitedElapsedTime::custom(AlwaysRetry, std::time::Duration::from_secs(10)))
}§Example
let d = std::time::Duration::from_secs(10);
let policy = AlwaysRetry.with_time_limit(d);
assert!(policy.remaining_time(std::time::Instant::now(), 0) <= Some(d));
assert!(policy.on_error(std::time::Instant::now(), 1, false, error::Error::other(format!("test"))).is_continue());Trait Implementations§
Source§impl<P> Debug for LimitedElapsedTime<P>where
P: RetryPolicy + Debug,
impl<P> Debug for LimitedElapsedTime<P>where
P: RetryPolicy + Debug,
Source§impl<P> RetryPolicy for LimitedElapsedTime<P>where
P: RetryPolicy + 'static,
impl<P> RetryPolicy for LimitedElapsedTime<P>where
P: RetryPolicy + 'static,
Auto Trait Implementations§
impl<P> Freeze for LimitedElapsedTime<P>where
P: Freeze,
impl<P> RefUnwindSafe for LimitedElapsedTime<P>where
P: RefUnwindSafe,
impl<P> Send for LimitedElapsedTime<P>
impl<P> Sync for LimitedElapsedTime<P>
impl<P> Unpin for LimitedElapsedTime<P>where
P: Unpin,
impl<P> UnwindSafe for LimitedElapsedTime<P>where
P: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> RetryPolicyExt for Twhere
T: RetryPolicy,
impl<T> RetryPolicyExt for Twhere
T: RetryPolicy,
Source§fn with_time_limit(self, maximum_duration: Duration) -> LimitedElapsedTime<Self>
fn with_time_limit(self, maximum_duration: Duration) -> LimitedElapsedTime<Self>
Decorate a
RetryPolicy to limit the total elapsed time in the retry loop. Read moreSource§fn with_attempt_limit(self, maximum_attempts: u32) -> LimitedAttemptCount<Self>
fn with_attempt_limit(self, maximum_attempts: u32) -> LimitedAttemptCount<Self>
Decorate a RetryPolicy to limit the number of retry attempts. Read more