[][src]Struct futures_retry::SinkRetry

pub struct SinkRetry<F, S> { /* fields omitted */ }

Provides a way to handle errors during a Sink execution, i.e. it gives you an ability to flush item's with delay.

This type is similar to StreamRetry. The diffrence is that SinkRetry is more limited:

  • SinkItem has to implement Clone trait.
  • error_action OutError has to implement From<SinkError> trait.

A fs-readwrite example is available in the examples folder. A tcp-copy example handle StreamRetry and SinkRetry example at once.

A typical usage might be recovering from errors when flushing data to I/O.

Warning (Implementation details)

It depends from inner sink what happen when inner start_send() is resolve to error. This function assume that error has the same meaning as AsyncSink::NotReady. If your item will be buffered before error was returned - SinkRetry will insert this item again anyway.

Methods

impl<F, S> SinkRetry<F, S> where
    S: Sink,
    S::SinkItem: Clone,
    F: ErrorHandler<S::SinkError>,
    F::OutError: From<S::SinkError>, 
[src]

pub fn new(sink: S, error_action: F) -> Self where
    S: Sink
[src]

Creates a SinkRetry using a provided sink and an object of ErrorHandler type that decides on a retry-policy depending on an encountered error.

Arguments

  • sink: a sink to be filled,
  • error_action: a type that handles an error and decides which route to take: simply try again, wait and then try, or give up (on a critical error for exapmle).

Notes

More common use is in like chain manner. See SinkRetryExt

Trait Implementations

impl<F, S> Sink for SinkRetry<F, S> where
    S: Sink,
    S::SinkItem: Clone,
    F: ErrorHandler<S::SinkError>,
    F::OutError: From<S::SinkError>, 
[src]

type SinkItem = S::SinkItem

The type of value that the sink accepts.

type SinkError = F::OutError

The type of value produced by the sink when an error occurs.

fn close(&mut self) -> Result<Async<()>, Self::SinkError>[src]

A method to indicate that no more values will ever be pushed into this sink. Read more

fn wait(self) -> Wait<Self>[src]

Creates a new object which will produce a synchronous sink. Read more

fn with<U, F, Fut>(self, f: F) -> With<Self, U, F, Fut> where
    F: FnMut(U) -> Fut,
    Fut: IntoFuture<Item = Self::SinkItem>,
    <Fut as IntoFuture>::Error: From<Self::SinkError>, 
[src]

Composes a function in front of the sink. Read more

fn with_flat_map<U, F, St>(self, f: F) -> WithFlatMap<Self, U, F, St> where
    F: FnMut(U) -> St,
    St: Stream<Item = Self::SinkItem, Error = Self::SinkError>, 
[src]

Composes a function in front of the sink. Read more

fn sink_map_err<F, E>(self, f: F) -> SinkMapErr<Self, F> where
    F: FnOnce(Self::SinkError) -> E, 
[src]

Transforms the error returned by the sink.

fn sink_from_err<E>(self) -> SinkFromErr<Self, E> where
    E: From<Self::SinkError>, 
[src]

Map this sink's error to any error implementing From for this sink's Error, returning a new sink. Read more

fn buffer(self, amt: usize) -> Buffer<Self>[src]

Adds a fixed-size buffer to the current sink. Read more

fn fanout<S>(self, other: S) -> Fanout<Self, S> where
    S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
    Self::SinkItem: Clone
[src]

Fanout items to multiple sinks. Read more

fn flush(self) -> Flush<Self>[src]

A future that completes when the sink has finished processing all pending requests. Read more

fn send(self, item: Self::SinkItem) -> Send<Self>[src]

A future that completes after the given item has been fully processed into the sink, including flushing. Read more

fn send_all<S>(self, stream: S) -> SendAll<Self, S> where
    S: Stream<Item = Self::SinkItem>,
    Self::SinkError: From<<S as Stream>::Error>, 
[src]

A future that completes after the given stream has been fully processed into the sink, including flushing. Read more

Auto Trait Implementations

impl<F, S> Send for SinkRetry<F, S> where
    F: Send,
    S: Send

impl<F, S> Sync for SinkRetry<F, S> where
    F: Sync,
    S: Sync

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.