Trait tokio_proto::multiplex::ClientProto [] [src]

pub trait ClientProto<T: 'static>: 'static {
    type Request: 'static;
    type Response: 'static;
    type Error: From<Error> + 'static;
    type Transport: 'static + Stream<Item=(RequestId, Self::Response), Error=Error> + Sink<SinkItem=(RequestId, Self::Request), SinkError=Error>;
    type BindTransport: IntoFuture<Item=Self::Transport, Error=Error>;
    fn bind_transport(&self, io: T) -> Self::BindTransport;
}

An multiplexed client protocol.

The T parameter is used for the I/O object used to communicate, which is supplied in bind_transport.

For simple protocols, the Self type is often a unit struct. In more advanced cases, Self may contain configuration information that is used for setting up the transport in bind_transport.

Associated Types

Request messages.

Response messages.

Errors produced by the service.

The message transport, which usually take T as a parameter.

An easy way to build a transport is to use tokio_core::io::Framed together with a Codec; in that case, the transport type is Framed<T, YourCodec>. See the crate docs for an example.

A future for initializing a transport from an I/O object.

In simple cases, Result<Self::Transport, Self::Error> often suffices.

Required Methods

Build a transport from the given I/O object, using self for any configuration.

An easy way to build a transport is to use tokio_core::io::Framed together with a Codec; in that case, bind_transport is just io.framed(YourCodec). See the crate docs for an example.

Implementors