[−][src]Struct tower::buffer::Buffer
buffer
only.Adds an mpsc buffer in front of an inner service.
See the module documentation for more details.
Implementations
impl<T, Request> Buffer<T, Request> where
T: Service<Request>,
T::Error: Into<BoxError>,
[src]
T: Service<Request>,
T::Error: Into<BoxError>,
pub fn new(service: T, bound: usize) -> Self where
T: Send + 'static,
T::Future: Send,
T::Error: Send + Sync,
Request: Send + 'static,
[src]
T: Send + 'static,
T::Future: Send,
T::Error: Send + Sync,
Request: Send + 'static,
Creates a new Buffer
wrapping service
.
bound
gives the maximal number of requests that can be queued for the service before
backpressure is applied to callers.
The default Tokio executor is used to run the given service, which means that this method must be called while on the Tokio runtime.
A note on choosing a bound
When Buffer
's implementation of poll_ready
returns Poll::Ready
, it reserves a
slot in the channel for the forthcoming call
. However, if this call doesn't arrive,
this reserved slot may be held up for a long time. As a result, it's advisable to set
bound
to be at least the maximum number of concurrent requests the Buffer
will see.
If you do not, all the slots in the buffer may be held up by futures that have just called
poll_ready
but will not issue a call
, which prevents other senders from issuing new
requests.
pub fn pair(
service: T,
bound: usize
) -> (Buffer<T, Request>, Worker<T, Request>) where
T: Send + 'static,
T::Error: Send + Sync,
Request: Send + 'static,
[src]
service: T,
bound: usize
) -> (Buffer<T, Request>, Worker<T, Request>) where
T: Send + 'static,
T::Error: Send + Sync,
Request: Send + 'static,
Trait Implementations
impl<T, Request> Clone for Buffer<T, Request> where
T: Service<Request>,
[src]
T: Service<Request>,
pub fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<T: Debug, Request: Debug> Debug for Buffer<T, Request> where
T: Service<Request>,
T::Future: Debug,
[src]
T: Service<Request>,
T::Future: Debug,
impl<T, Request> Service<Request> for Buffer<T, Request> where
T: Service<Request>,
T::Error: Into<BoxError>,
[src]
T: Service<Request>,
T::Error: Into<BoxError>,
type Response = T::Response
Responses given by the service.
type Error = BoxError
Errors produced by the service.
type Future = ResponseFuture<T::Future>
The future response value.
pub fn poll_ready(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), Self::Error>>
pub fn call(&mut self, request: Request) -> Self::Future
[src]
Auto Trait Implementations
impl<T, Request> !RefUnwindSafe for Buffer<T, Request>
[src]
impl<T, Request> Send for Buffer<T, Request> where
Request: Send,
<T as Service<Request>>::Future: Send,
[src]
Request: Send,
<T as Service<Request>>::Future: Send,
impl<T, Request> Sync for Buffer<T, Request> where
Request: Send,
<T as Service<Request>>::Future: Send,
[src]
Request: Send,
<T as Service<Request>>::Future: Send,
impl<T, Request> Unpin for Buffer<T, Request>
[src]
impl<T, Request> !UnwindSafe for Buffer<T, Request>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, Request> ServiceExt<Request> for T where
T: Service<Request> + ?Sized,
[src]
T: Service<Request> + ?Sized,
pub fn ready_and(&mut self) -> ReadyAnd<'_, Self, Request>ⓘ where
Self: Sized,
[src]
Self: Sized,
pub fn ready_oneshot(self) -> ReadyOneshot<Self, Request>ⓘNotable traits for ReadyOneshot<T, Request>
impl<T, Request> Future for ReadyOneshot<T, Request> where
T: Service<Request>, type Output = Result<T, T::Error>;
where
Self: Sized,
[src]
Notable traits for ReadyOneshot<T, Request>
impl<T, Request> Future for ReadyOneshot<T, Request> where
T: Service<Request>, type Output = Result<T, T::Error>;
Self: Sized,
pub fn oneshot(self, req: Request) -> Oneshot<Self, Request>ⓘ where
Self: Sized,
[src]
Self: Sized,
pub fn call_all<S>(self, reqs: S) -> CallAll<Self, S> where
Self: Sized,
Self::Error: Into<BoxError>,
S: Stream<Item = Request>,
[src]
Self: Sized,
Self::Error: Into<BoxError>,
S: Stream<Item = Request>,
pub fn and_then<F>(self, f: F) -> AndThen<Self, F> where
Self: Sized,
F: Clone,
[src]
Self: Sized,
F: Clone,
pub fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F> where
Self: Sized,
F: FnOnce(Self::Response) -> Response + Clone,
[src]
Self: Sized,
F: FnOnce(Self::Response) -> Response + Clone,
pub fn map_err<F, Error>(self, f: F) -> MapErr<Self, F> where
Self: Sized,
F: FnOnce(Self::Error) -> Error + Clone,
[src]
Self: Sized,
F: FnOnce(Self::Error) -> Error + Clone,
pub fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F> where
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Result<Response, Error> + Clone,
[src]
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Result<Response, Error> + Clone,
pub fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F> where
Self: Sized,
F: FnMut(NewRequest) -> Request + Clone,
[src]
Self: Sized,
F: FnMut(NewRequest) -> Request + Clone,
pub fn filter<F, NewRequest>(self, filter: F) -> Filter<Self, F> where
Self: Sized,
F: Predicate<NewRequest>,
[src]
Self: Sized,
F: Predicate<NewRequest>,
pub fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F> where
Self: Sized,
F: AsyncPredicate<NewRequest>,
[src]
Self: Sized,
F: AsyncPredicate<NewRequest>,
pub fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F> where
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Fut + Clone,
Fut: Future<Output = Result<Response, Error>>,
[src]
Self: Sized,
Error: From<Self::Error>,
F: FnOnce(Result<Self::Response, Self::Error>) -> Fut + Clone,
Fut: Future<Output = Result<Response, Error>>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,