tokio_tower

Trait MakeTransport

Source
pub trait MakeTransport<Target, Request>: Sealed<Target, Request> {
    type Item;
    type Error;
    type SinkError;
    type Transport: TryStream<Ok = Self::Item, Error = Self::Error> + Sink<Request, Error = Self::SinkError>;
    type MakeError;
    type Future: Future<Output = Result<Self::Transport, Self::MakeError>>;

    // Required methods
    fn poll_ready(
        &mut self,
        cx: &mut Context<'_>,
    ) -> Poll<Result<(), Self::MakeError>>;
    fn make_transport(&mut self, target: Target) -> Self::Future;
}
Expand description

Creates new Transport (i.e., Sink + Stream) instances.

Acts as a transport factory. This is useful for cases where new Sink + Stream values must be produced.

This is essentially a trait alias for a Service of Sink + Streams.

Required Associated Types§

Source

type Item

Items produced by the transport

Source

type Error

Errors produced when receiving from the transport

Source

type SinkError

Errors produced when sending to the transport

Source

type Transport: TryStream<Ok = Self::Item, Error = Self::Error> + Sink<Request, Error = Self::SinkError>

The Sink + Stream implementation created by this factory

Source

type MakeError

Errors produced while building a transport.

Source

type Future: Future<Output = Result<Self::Transport, Self::MakeError>>

The future of the Service instance.

Required Methods§

Source

fn poll_ready( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::MakeError>>

Returns Ready when the factory is able to create more transports.

If the service is at capacity, then NotReady is returned and the task is notified when the service becomes ready again. This function is expected to be called while on a task.

This is a best effort implementation. False positives are permitted. It is permitted for the service to return Ready from a poll_ready call and the next invocation of make_transport results in an error.

Source

fn make_transport(&mut self, target: Target) -> Self::Future

Create and return a new transport asynchronously.

Implementors§

Source§

impl<M, T, Target, Request> MakeTransport<Target, Request> for M
where M: Service<Target, Response = T>, T: TryStream + Sink<Request>,

Source§

type Item = <T as TryStream>::Ok

Source§

type Error = <T as TryStream>::Error

Source§

type SinkError = <T as Sink<Request>>::Error

Source§

type Transport = T

Source§

type MakeError = <M as Service<Target>>::Error

Source§

type Future = <M as Service<Target>>::Future