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§
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>>
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>>
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>>
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>>
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>>
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>>
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>>
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>>
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.