Struct Framed
struct Framed<T, U> { ... }
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 Decoder::framed adapter, or
by using the new function seen below.
Cancellation safety
futures_util::sink::SinkExt::send: if send is used as the event in atokio::select!statement and some other branch completes first, then it is guaranteed that the message was not sent, but the message itself is lost.tokio_stream::StreamExt::next: This method is cancel safe. The returned future only holds onto a reference to the underlying stream, so dropping it will never lose a value.
Implementations
impl<T, U> Framed<T, U>
fn from_parts(parts: FramedParts<T, U>) -> Framed<T, U>Provides a
StreamandSinkinterface for reading and writing to this I/O object, usingDecoderandEncoderto 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
Codectraits 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
StreamandSink; 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
readbufferand awritebuffer. These field can be obtained from an existingFramedwith theinto_partsmethod.If you want to work more directly with the streams and sink, consider calling
spliton theFramedreturned by this method, which will break them into separate objects, allowing them to interact more easily.fn get_ref(self: &Self) -> &TReturns a reference to the underlying I/O stream wrapped by
Framed.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.
fn get_mut(self: &mut Self) -> &mut TReturns a mutable reference to the underlying I/O stream wrapped by
Framed.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.
fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T>Returns a pinned mutable reference to the underlying I/O stream wrapped by
Framed.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.
fn codec(self: &Self) -> &UReturns a reference to the underlying codec wrapped by
Framed.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.
fn codec_mut(self: &mut Self) -> &mut UReturns a mutable reference to the underlying codec wrapped by
Framed.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.
fn map_codec<C, F>(self: Self, map: F) -> Framed<T, C> where F: FnOnce(U) -> CMaps the codec
UtoC, preserving the read and write buffers wrapped byFramed.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.
fn codec_pin_mut(self: Pin<&mut Self>) -> &mut UReturns a mutable reference to the underlying codec wrapped by
Framed.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.
fn read_buffer(self: &Self) -> &BytesMutReturns a reference to the read buffer.
fn read_buffer_mut(self: &mut Self) -> &mut BytesMutReturns a mutable reference to the read buffer.
fn write_buffer(self: &Self) -> &BytesMutReturns a reference to the write buffer.
fn write_buffer_mut(self: &mut Self) -> &mut BytesMutReturns a mutable reference to the write buffer.
fn backpressure_boundary(self: &Self) -> usizeReturns backpressure boundary
fn set_backpressure_boundary(self: &mut Self, boundary: usize)Updates backpressure boundary
fn into_inner(self: Self) -> TConsumes the
Framed, 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.
fn into_parts(self: Self) -> FramedParts<T, U>Consumes the
Framed, 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.
impl<T, U> Framed<T, U>
fn new(inner: T, codec: U) -> Framed<T, U>Provides a
StreamandSinkinterface for reading and writing to this I/O object, usingDecoderandEncoderto 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
StreamandSink; 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
spliton theFramedreturned by this method, which will break them into separate objects, allowing them to interact more easily.Note that, for some byte sources, the stream can be resumed after an EOF by reading from it, even after it has returned
None. Repeated attempts to do so, without new data available, continue to returnNonewithout creating more (closing) frames.fn with_capacity(inner: T, codec: U, capacity: usize) -> Framed<T, U>Provides a
StreamandSinkinterface for reading and writing to this I/O object, usingDecoderandEncoderto read and write the raw data, with a specific read buffer initial capacity.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
StreamandSink; 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
spliton theFramedreturned by this method, which will break them into separate objects, allowing them to interact more easily.
impl<'__pin, T, U> Unpin for Framed<T, U>
impl<S, T, E> TryStream for Framed<T, U>
fn try_poll_next(self: Pin<&mut S>, cx: &mut Context<'_>) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>
impl<T> Any for Framed<T, U>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Framed<T, U>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Framed<T, U>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> From for Framed<T, U>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, I, U> Sink for Framed<T, U>
fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), <Self as >::Error>>fn start_send(self: Pin<&mut Self>, item: I) -> Result<(), <Self as >::Error>fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), <Self as >::Error>>fn poll_close(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), <Self as >::Error>>
impl<T, U> Debug for Framed<T, U>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T, U> Freeze for Framed<T, U>
impl<T, U> Into for Framed<T, U>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> RefUnwindSafe for Framed<T, U>
impl<T, U> Send for Framed<T, U>
impl<T, U> Stream for Framed<T, U>
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<<Self as >::Item>>
impl<T, U> Sync for Framed<T, U>
impl<T, U> TryFrom for Framed<T, U>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Framed<T, U>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>