pub struct LimitedAttemptCount<P = Aip194Strict>where
P: PollingErrorPolicy,{ /* private fields */ }Expand description
A polling policy decorator that limits the number of attempts.
This policy decorates an inner policy and limits polling total number of attempts. Setting the maximum number of attempts to 0 results in no polling attempts before the initial one.
The policy passes through the results from the inner policy as long as
attempt_count < maximum_attempts. However, once the maximum number of
attempts is reached, the policy replaces any Continue
result with Exhausted.
§Parameters
P- the inner polling policy.
Implementations§
Source§impl LimitedAttemptCount
impl LimitedAttemptCount
Sourcepub fn new(maximum_attempts: u32) -> Self
pub fn new(maximum_attempts: u32) -> Self
Creates a new instance, with the default inner policy.
§Example
use std::time::Instant;
let policy = LimitedAttemptCount::new(5);
let state = PollingState::default().set_attempt_count(10_u32);
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> LimitedAttemptCount<P>where
P: PollingErrorPolicy,
impl<P> LimitedAttemptCount<P>where
P: PollingErrorPolicy,
Sourcepub fn custom(inner: P, maximum_attempts: u32) -> Self
pub fn custom(inner: P, maximum_attempts: u32) -> Self
Creates a new instance with a custom inner policy.
§Example
let policy = LimitedAttemptCount::custom(AlwaysContinue, 2);
assert!(policy.on_error(&PollingState::default().set_attempt_count(1_u32), permanent_error()).is_continue());
assert!(policy.on_error(&PollingState::default().set_attempt_count(2_u32), 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 LimitedAttemptCount<P>where
P: PollingErrorPolicy + Debug,
impl<P> Debug for LimitedAttemptCount<P>where
P: PollingErrorPolicy + Debug,
impl<P> PollingErrorPolicy for LimitedAttemptCount<P>where
P: PollingErrorPolicy,
Auto Trait Implementations§
impl<P> Freeze for LimitedAttemptCount<P>where
P: Freeze,
impl<P> RefUnwindSafe for LimitedAttemptCount<P>where
P: RefUnwindSafe,
impl<P> Send for LimitedAttemptCount<P>
impl<P> Sync for LimitedAttemptCount<P>
impl<P> Unpin for LimitedAttemptCount<P>where
P: Unpin,
impl<P> UnwindSafe for LimitedAttemptCount<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> PollingErrorPolicyExt for Twhere
T: PollingErrorPolicy,
impl<T> PollingErrorPolicyExt for Twhere
T: PollingErrorPolicy,
Source§fn with_time_limit(self, maximum_duration: Duration) -> LimitedElapsedTime<Self>
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>
fn with_attempt_limit(self, maximum_attempts: u32) -> LimitedAttemptCount<Self>
Decorate a PollingErrorPolicy to limit the number of poll attempts. Read more