[−][src]Struct futures_retry::SinkRetry
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 implementFrom<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]
S: Sink,
S::SinkItem: Clone,
F: ErrorHandler<S::SinkError>,
F::OutError: From<S::SinkError>,
pub fn new(sink: S, error_action: F) -> Self where
S: Sink,
[src]
S: Sink,
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]
S: Sink,
S::SinkItem: Clone,
F: ErrorHandler<S::SinkError>,
F::OutError: From<S::SinkError>,
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 start_send(
&mut self,
item: Self::SinkItem
) -> StartSend<Self::SinkItem, Self::SinkError>
[src]
&mut self,
item: Self::SinkItem
) -> StartSend<Self::SinkItem, Self::SinkError>
fn poll_complete(&mut self) -> Poll<(), Self::SinkError>
[src]
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]
F: FnMut(U) -> Fut,
Fut: IntoFuture<Item = Self::SinkItem>,
<Fut as IntoFuture>::Error: From<Self::SinkError>,
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]
F: FnMut(U) -> St,
St: Stream<Item = Self::SinkItem, Error = Self::SinkError>,
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]
F: FnOnce(Self::SinkError) -> E,
Transforms the error returned by the sink.
fn sink_from_err<E>(self) -> SinkFromErr<Self, E> where
E: From<Self::SinkError>,
[src]
E: From<Self::SinkError>,
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]
S: Sink<SinkItem = Self::SinkItem, SinkError = Self::SinkError>,
Self::SinkItem: Clone,
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]
S: Stream<Item = Self::SinkItem>,
Self::SinkError: From<<S as Stream>::Error>,
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,
F: Send,
S: Send,
impl<F, S> Sync for SinkRetry<F, S> where
F: Sync,
S: Sync,
F: Sync,
S: Sync,
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,