PollService

Struct PollService 

Source
pub struct PollService<E, S, F>
where F: Fn(usize) -> Result<(), RetryError<E>>,
{ /* private fields */ }
Expand description

A Service, MutService, or AsyncService, which encapsulates a Service<(), Output = Option<T>>, MutService<(), Output = Option<T>>, or AsyncService<(), Output = Option<T>>, blocking with the given idle function until a value is returned or the idle function returns an error.

When the underlying Service<()> returns None, the given idle function will be called. The idle function will be called repeatedly, given the attempt number as input, until Some(T) is returned by the underlying service. The idle function may return Err(RetryError::Interrupted) to return an error and avoid blocking forever.

See the idle module for some provided idle functions.

Implementations§

Source§

impl<E, S, F> PollService<E, S, F>
where F: Fn(usize) -> Result<(), RetryError<E>>,

Source

pub fn new(service: S, idle: F) -> Self

Trait Implementations§

Source§

impl<O, E, S, F> AsyncService for PollService<E, S, F>
where O: Send + 'static, E: Send + 'static, S: AsyncService<Input = (), Output = Option<O>, Error = E> + Send + Sync, F: Fn(usize) -> Result<(), RetryError<E>> + Send + Sync,

Source§

type Input = ()

Source§

type Output = O

Source§

type Error = RetryError<<S as AsyncService>::Error>

Source§

fn process<'life0, 'async_trait>( &'life0 self, __arg1: (), ) -> Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

impl<O, E, S, F> MutService for PollService<E, S, F>
where S: MutService<Input = (), Output = Option<O>, Error = E>, F: Fn(usize) -> Result<(), RetryError<E>>,

Source§

type Input = ()

Source§

type Output = O

Source§

type Error = RetryError<<S as MutService>::Error>

Source§

fn process(&mut self, _: ()) -> Result<Self::Output, Self::Error>

Source§

fn into_dyn<'a>( self, ) -> DynMutService<'a, Self::Input, Self::Output, Self::Error>
where Self: Sized + 'static,

Convert this Service into a DynMutService
Source§

impl<O, E, S, F> Service for PollService<E, S, F>
where S: Service<Input = (), Output = Option<O>, Error = E>, F: Fn(usize) -> Result<(), RetryError<E>>,

Source§

type Input = ()

Source§

type Output = O

Source§

type Error = RetryError<<S as Service>::Error>

Source§

fn process(&self, _: ()) -> Result<Self::Output, Self::Error>

Process an input, producing a Result<Self::Output, Self::Error>
Source§

fn into_mut(self) -> ServiceMut<Self>
where Self: Sized,

Convert this Service into a ServiceMut which impls MutService
Source§

fn into_async(self) -> ServiceAsync<Self>
where Self: Sized + Send + Sync + 'static,

Convert this Service into a ServiceAsync which impls AsyncService
Source§

fn into_dyn<'a>(self) -> DynService<'a, Self::Input, Self::Output, Self::Error>
where Self: Sized + 'static,

Convert this Service into a DynService

Auto Trait Implementations§

§

impl<E, S, F> Freeze for PollService<E, S, F>
where S: Freeze, F: Freeze,

§

impl<E, S, F> RefUnwindSafe for PollService<E, S, F>

§

impl<E, S, F> Send for PollService<E, S, F>
where S: Send, F: Send,

§

impl<E, S, F> Sync for PollService<E, S, F>
where S: Sync, F: Sync,

§

impl<E, S, F> Unpin for PollService<E, S, F>
where S: Unpin, F: Unpin,

§

impl<E, S, F> UnwindSafe for PollService<E, S, F>
where S: UnwindSafe, F: 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, 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.