LimitedElapsedTime

Struct LimitedElapsedTime 

Source
pub struct LimitedElapsedTime<P = Aip194Strict>{ /* private fields */ }
Expand description

A polling policy decorator that limits the total time in the polling loop.

This policy decorates an inner policy and limits the duration of polling loops. While the time spent in the polling 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
use std::time::{Duration, Instant};
let policy = LimitedElapsedTime::new(Duration::from_secs(10));
let state = PollingState::default().set_start(Instant::now() - Duration::from_secs(20));
assert!(policy.on_error(&state, transient_error()).is_exhausted());

use google_cloud_gax::error::{Error, rpc::Code, rpc::Status};
fn transient_error() -> Error { Error::service(Status::default().set_code(Code::Unavailable)) }
Source§

impl<P> LimitedElapsedTime<P>

Source

pub fn custom(inner: P, maximum_duration: Duration) -> Self

Creates a new instance with a custom inner policy.

§Example
use std::time::{Duration, Instant};
let policy = LimitedElapsedTime::custom(AlwaysContinue, Duration::from_secs(10));
let state = PollingState::default().set_start(Instant::now() - Duration::from_secs(20));
assert!(policy.on_error(&state, permanent_error()).is_exhausted());

use google_cloud_gax::error::{Error, rpc::Code, rpc::Status};
fn permanent_error() -> Error { Error::service(Status::default().set_code(Code::Aborted)) }

Trait Implementations§

Source§

impl<P> Debug for LimitedElapsedTime<P>

Source§

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

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

impl<P> PollingErrorPolicy for LimitedElapsedTime<P>
where P: PollingErrorPolicy + '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> 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, 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> PollingErrorPolicyExt for T

Source§

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

Decorate a PollingErrorPolicy to limit the total elapsed time in the polling loop. Read more
Source§

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

Decorate a PollingErrorPolicy to limit the number of poll 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