gcp_sdk_gax::retry_policy

Struct LimitedElapsedTime

Source
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

Implementations§

Source§

impl LimitedElapsedTime

Source

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,

Source

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,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<P> RetryPolicy for LimitedElapsedTime<P>
where P: RetryPolicy + 'static,

Source§

fn on_error( &self, start: Instant, count: u32, idempotent: bool, error: Error, ) -> RetryFlow

Query the retry policy after an error. Read more
Source§

fn remaining_time( &self, loop_start: Instant, attempt_count: u32, ) -> Option<Duration>

The remaining time in the retry policy. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> RetryPolicyExt for T
where T: RetryPolicy,

Source§

fn with_time_limit(self, maximum_duration: Duration) -> LimitedElapsedTime<Self>

Decorate a RetryPolicy to limit the total elapsed time in the retry loop. Read more
Source§

fn with_attempt_limit(self, maximum_attempts: u32) -> LimitedAttemptCount<Self>

Decorate a RetryPolicy to limit the number of retry attempts. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T