libp2p::request_response

Trait Codec

pub trait Codec {
    type Protocol: AsRef<str> + Send + Clone;
    type Request: Send;
    type Response: Send;

    // Required methods
    fn read_request<'life0, 'life1, 'life2, 'async_trait, T>(
        &'life0 mut self,
        protocol: &'life1 Self::Protocol,
        io: &'life2 mut T,
    ) -> Pin<Box<dyn Future<Output = Result<Self::Request, Error>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             T: AsyncRead + Unpin + Send + 'async_trait,
             Self: 'async_trait;
    fn read_response<'life0, 'life1, 'life2, 'async_trait, T>(
        &'life0 mut self,
        protocol: &'life1 Self::Protocol,
        io: &'life2 mut T,
    ) -> Pin<Box<dyn Future<Output = Result<Self::Response, Error>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             T: AsyncRead + Unpin + Send + 'async_trait,
             Self: 'async_trait;
    fn write_request<'life0, 'life1, 'life2, 'async_trait, T>(
        &'life0 mut self,
        protocol: &'life1 Self::Protocol,
        io: &'life2 mut T,
        req: Self::Request,
    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             T: AsyncWrite + Unpin + Send + 'async_trait,
             Self: 'async_trait;
    fn write_response<'life0, 'life1, 'life2, 'async_trait, T>(
        &'life0 mut self,
        protocol: &'life1 Self::Protocol,
        io: &'life2 mut T,
        res: Self::Response,
    ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             T: AsyncWrite + Unpin + Send + 'async_trait,
             Self: 'async_trait;
}
Available on crate feature request-response only.
Expand description

A Codec defines the request and response types for a request-response Behaviour protocol or protocol family and how they are encoded / decoded on an I/O stream.

Required Associated Types§

type Protocol: AsRef<str> + Send + Clone

The type of protocol(s) or protocol versions being negotiated.

type Request: Send

The type of inbound and outbound requests.

type Response: Send

The type of inbound and outbound responses.

Required Methods§

fn read_request<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 mut self, protocol: &'life1 Self::Protocol, io: &'life2 mut T, ) -> Pin<Box<dyn Future<Output = Result<Self::Request, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, T: AsyncRead + Unpin + Send + 'async_trait, Self: 'async_trait,

Reads a request from the given I/O stream according to the negotiated protocol.

fn read_response<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 mut self, protocol: &'life1 Self::Protocol, io: &'life2 mut T, ) -> Pin<Box<dyn Future<Output = Result<Self::Response, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, T: AsyncRead + Unpin + Send + 'async_trait, Self: 'async_trait,

Reads a response from the given I/O stream according to the negotiated protocol.

fn write_request<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 mut self, protocol: &'life1 Self::Protocol, io: &'life2 mut T, req: Self::Request, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, T: AsyncWrite + Unpin + Send + 'async_trait, Self: 'async_trait,

Writes a request to the given I/O stream according to the negotiated protocol.

fn write_response<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 mut self, protocol: &'life1 Self::Protocol, io: &'life2 mut T, res: Self::Response, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, T: AsyncWrite + Unpin + Send + 'async_trait, Self: 'async_trait,

Writes a response to the given I/O stream according to the negotiated protocol.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§