Struct tokio_serde::Framed

source ·
pub struct Framed<Transport, Item, SinkItem, Codec> { /* private fields */ }
Expand description

Adapts a transport to a value sink by serializing the values and to a stream of values by deserializing them.

It is expected that the buffers yielded by the supplied transport be framed. In other words, each yielded buffer must represent exactly one serialized value.

The provided transport will receive buffer values containing the serialized value. Each buffer contains exactly one value. This sink will be responsible for writing these buffers to an AsyncWrite using some sort of framing strategy.

The specific framing strategy is left up to the implementor. One option would be to use length_delimited provided by tokio-util.

Implementations§

source§

impl<Transport, Item, SinkItem, Codec> Framed<Transport, Item, SinkItem, Codec>

source

pub fn new(inner: Transport, codec: Codec) -> Self

Creates a new Framed with the given transport and codec.

source

pub fn get_ref(&self) -> &Transport

Returns a reference to the underlying transport wrapped by Framed.

Note that care should be taken to not tamper with the underlying transport as it may corrupt the sequence of frames otherwise being worked with.

source

pub fn get_mut(&mut self) -> &mut Transport

Returns a mutable reference to the underlying transport wrapped by Framed.

Note that care should be taken to not tamper with the underlying transport as it may corrupt the sequence of frames otherwise being worked with.

source

pub fn into_inner(self) -> Transport

Consumes the Framed, returning its underlying transport.

Note that care should be taken to not tamper with the underlying transport as it may corrupt the sequence of frames otherwise being worked with.

Trait Implementations§

source§

impl<Transport: Debug, Item: Debug, SinkItem: Debug, Codec: Debug> Debug for Framed<Transport, Item, SinkItem, Codec>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Transport, Item, SinkItem, Codec> Sink<SinkItem> for Framed<Transport, Item, SinkItem, Codec>
where Transport: Sink<Bytes>, Codec: Serializer<SinkItem>, Codec::Error: Into<Transport::Error>,

§

type Error = <Transport as Sink<Bytes>>::Error

The type of value produced by the sink when an error occurs.
source§

fn poll_ready( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<Result<(), Self::Error>>

Attempts to prepare the Sink to receive a value. Read more
source§

fn start_send(self: Pin<&mut Self>, item: SinkItem) -> Result<(), Self::Error>

Begin the process of sending a value to the sink. Each call to this function must be preceded by a successful call to poll_ready which returned Poll::Ready(Ok(())). Read more
source§

fn poll_flush( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<Result<(), Self::Error>>

Flush any remaining output from this sink. Read more
source§

fn poll_close( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<Result<(), Self::Error>>

Flush any remaining output and close this sink, if necessary. Read more
source§

impl<Transport, Item, SinkItem, Codec> Stream for Framed<Transport, Item, SinkItem, Codec>
where Transport: TryStream<Ok = BytesMut>, Transport::Error: From<Codec::Error>, BytesMut: From<Transport::Ok>, Codec: Deserializer<Item>,

§

type Item = Result<Item, <Transport as TryStream>::Error>

Values yielded by the stream.
source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_> ) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more
source§

impl<'pin, Transport, Item, SinkItem, Codec> Unpin for Framed<Transport, Item, SinkItem, Codec>
where __Framed<'pin, Transport, Item, SinkItem, Codec>: Unpin,

Auto Trait Implementations§

§

impl<Transport, Item, SinkItem, Codec> RefUnwindSafe for Framed<Transport, Item, SinkItem, Codec>
where Codec: RefUnwindSafe, Item: RefUnwindSafe, SinkItem: RefUnwindSafe, Transport: RefUnwindSafe,

§

impl<Transport, Item, SinkItem, Codec> Send for Framed<Transport, Item, SinkItem, Codec>
where Codec: Send, Item: Send, SinkItem: Send, Transport: Send,

§

impl<Transport, Item, SinkItem, Codec> Sync for Framed<Transport, Item, SinkItem, Codec>
where Codec: Sync, Item: Sync, SinkItem: Sync, Transport: Sync,

§

impl<Transport, Item, SinkItem, Codec> UnwindSafe for Framed<Transport, Item, SinkItem, Codec>
where Codec: UnwindSafe, Item: UnwindSafe, SinkItem: UnwindSafe, Transport: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

§

type Ok = T

The type of successful values yielded by this future
§

type Error = E

The type of failures yielded by this future
source§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_> ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more