pub struct Framed<T, U> { /* private fields */ }
Expand description
A unified Stream
and Sink
interface to an underlying I/O object, using the Encoder
and
Decoder
traits to encode and decode frames.
Raw I/O objects work with byte sequences, but higher-level code usually wants to batch these
into meaningful chunks, called “frames”. This method layers framing on top of an I/O object,
by using the Encoder
/Decoder
traits to handle encoding and decoding of message frames.
Note that the incoming and outgoing frame types may be distinct.
Implementations§
source§impl<T, U> Framed<T, U>
impl<T, U> Framed<T, U>
sourcepub fn io_ref(&self) -> &T
pub fn io_ref(&self) -> &T
Returns a reference to the underlying I/O stream wrapped by Frame
.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
sourcepub fn io_mut(&mut self) -> &mut T
pub fn io_mut(&mut self) -> &mut T
Returns a mutable reference to the underlying I/O stream.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
sourcepub fn io_pin(self: Pin<&mut Self>) -> Pin<&mut T>
pub fn io_pin(self: Pin<&mut Self>) -> Pin<&mut T>
Returns a Pin
of a mutable reference to the underlying I/O stream.
sourcepub fn is_read_buf_empty(&self) -> bool
pub fn is_read_buf_empty(&self) -> bool
Check if read buffer is empty.
sourcepub fn is_write_buf_empty(&self) -> bool
pub fn is_write_buf_empty(&self) -> bool
Check if write buffer is empty.
sourcepub fn is_write_buf_full(&self) -> bool
pub fn is_write_buf_full(&self) -> bool
Check if write buffer is full.
sourcepub fn is_write_ready(&self) -> bool
pub fn is_write_ready(&self) -> bool
Check if framed is able to write more data.
Framed
object considers ready if there is free space in write buffer.
sourcepub fn replace_codec<U2>(self, codec: U2) -> Framed<T, U2>
pub fn replace_codec<U2>(self, codec: U2) -> Framed<T, U2>
Consume the Frame
, returning Frame
with different codec.
sourcepub fn into_map_io<F, T2>(self, f: F) -> Framed<T2, U>where
F: Fn(T) -> T2,
pub fn into_map_io<F, T2>(self, f: F) -> Framed<T2, U>where
F: Fn(T) -> T2,
Consume the Frame
, returning Frame
with different io.
sourcepub fn into_map_codec<F, U2>(self, f: F) -> Framed<T, U2>where
F: Fn(U) -> U2,
pub fn into_map_codec<F, U2>(self, f: F) -> Framed<T, U2>where
F: Fn(U) -> U2,
Consume the Frame
, returning Frame
with different codec.
source§impl<T, U> Framed<T, U>
impl<T, U> Framed<T, U>
sourcepub fn write<I>(
self: Pin<&mut Self>,
item: I,
) -> Result<(), <U as Encoder<I>>::Error>where
T: AsyncWrite,
U: Encoder<I>,
pub fn write<I>(
self: Pin<&mut Self>,
item: I,
) -> Result<(), <U as Encoder<I>>::Error>where
T: AsyncWrite,
U: Encoder<I>,
Serialize item and write to the inner buffer
sourcepub fn next_item(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<<U as Decoder>::Item, U::Error>>>
pub fn next_item( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<U as Decoder>::Item, U::Error>>>
Try to read underlying I/O stream and decode item.
source§impl<T, U> Framed<T, U>
impl<T, U> Framed<T, U>
sourcepub fn from_parts(parts: FramedParts<T, U>) -> Framed<T, U>
pub fn from_parts(parts: FramedParts<T, U>) -> Framed<T, U>
This function returns a single object that is both Stream
and Sink
; grouping this into
a single object is often useful for layering things like gzip or TLS, which require both
read and write access to the underlying object.
These objects take a stream, a read buffer and a write buffer. These fields can be obtained
from an existing Framed
with the into_parts
method.
sourcepub fn into_parts(self) -> FramedParts<T, U>
pub fn into_parts(self) -> FramedParts<T, U>
Consumes the Frame
, returning its underlying I/O stream, the buffer with unprocessed data,
and the codec.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
Trait Implementations§
source§impl<T, U, I> Sink<I> for Framed<T, U>
impl<T, U, I> Sink<I> for Framed<T, U>
source§type Error = <U as Encoder<I>>::Error
type Error = <U as Encoder<I>>::Error
source§fn poll_ready(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>
fn poll_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>
Sink
to receive a value. Read moresource§fn start_send(self: Pin<&mut Self>, item: I) -> Result<(), Self::Error>
fn start_send(self: Pin<&mut Self>, item: I) -> Result<(), Self::Error>
poll_ready
which returned Poll::Ready(Ok(()))
. Read more