libp2p_request_response

Trait Codec

Source
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>> + Send + 'async_trait>>
       where T: AsyncRead + Unpin + Send + 'async_trait,
             Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: '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>> + Send + 'async_trait>>
       where T: AsyncRead + Unpin + Send + 'async_trait,
             Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: '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<()>> + Send + 'async_trait>>
       where T: AsyncWrite + Unpin + Send + 'async_trait,
             Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: '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<()>> + Send + 'async_trait>>
       where T: AsyncWrite + Unpin + Send + 'async_trait,
             Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
}
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§

Source

type Protocol: AsRef<str> + Send + Clone

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

Source

type Request: Send

The type of inbound and outbound requests.

Source

type Response: Send

The type of inbound and outbound responses.

Required Methods§

Source

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>> + Send + 'async_trait>>
where T: AsyncRead + Unpin + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

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

Source

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>> + Send + 'async_trait>>
where T: AsyncRead + Unpin + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

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

Source

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<()>> + Send + 'async_trait>>
where T: AsyncWrite + Unpin + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

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

Source

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<()>> + Send + 'async_trait>>
where T: AsyncWrite + Unpin + Send + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: '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§