Struct tokio_codec::Framed
source · 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.
You can create a Framed
instance by using the AsyncRead::framed
adapter.
Implementations§
source§impl<T, U> Framed<T, U>
impl<T, U> Framed<T, U>
sourcepub fn new(inner: T, codec: U) -> Framed<T, U>
pub fn new(inner: T, codec: U) -> Framed<T, U>
Provides a Stream
and Sink
interface for reading and writing to this
Io
object, using Decode
and Encode
to read and write the raw data.
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 Codec
traits to handle encoding and decoding of messages frames. Note that
the incoming and outgoing frame types may be distinct.
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.
If you want to work more directly with the streams and sink, consider
calling split
on the Framed
returned by this method, which will
break them into separate objects, allowing them to interact more easily.
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>
Provides a Stream
and Sink
interface for reading and writing to this
Io
object, using Decode
and Encode
to read and write the raw data.
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 Codec
traits to handle encoding and decoding of messages frames. Note that
the incoming and outgoing frame types may be distinct.
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.
This objects takes a stream and a readbuffer and a writebuffer. These field
can be obtained from an existing Framed
with the into_parts
method.
If you want to work more directly with the streams and sink, consider
calling split
on the Framed
returned by this method, which will
break them into separate objects, allowing them to interact more easily.
sourcepub fn get_ref(&self) -> &T
pub fn get_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 get_mut(&mut self) -> &mut T
pub fn get_mut(&mut self) -> &mut T
Returns a mutable 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 codec(&self) -> &U
pub fn codec(&self) -> &U
Returns a reference to the underlying codec wrapped by
Frame
.
Note that care should be taken to not tamper with the underlying codec as it may corrupt the stream of frames otherwise being worked with.
sourcepub fn codec_mut(&mut self) -> &mut U
pub fn codec_mut(&mut self) -> &mut U
Returns a mutable reference to the underlying codec wrapped by
Frame
.
Note that care should be taken to not tamper with the underlying codec as it may corrupt the stream of frames otherwise being worked with.
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consumes the Frame
, returning its 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 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, I, U> Sink<I> for Framed<T, U>
impl<T, I, U> Sink<I> for Framed<T, U>
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