Struct Framed

Source
pub struct Framed<IO, Codec> { /* private fields */ }

Implementations§

Source§

impl<IO, Codec> Framed<IO, Codec>

Source

pub fn new(io: IO, codec: Codec) -> Self

Source

pub fn with_capacity(io: IO, codec: Codec, capacity: usize) -> Self

Source

pub fn get_ref(&self) -> &IO

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

Source

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

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

Source

pub fn codec(&self) -> &Codec

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

Source

pub fn codec_mut(&mut self) -> &mut Codec

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

Source

pub fn map_codec<CodecNew, F>(self, map: F) -> Framed<IO, CodecNew>
where F: FnOnce(Codec) -> CodecNew,

Maps the codec U to C, preserving the read and write buffers 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.

Source

pub fn read_buffer(&self) -> &BytesMut

Returns a reference to the read buffer.

Source

pub fn read_buffer_mut(&mut self) -> &mut BytesMut

Returns a mutable reference to the read buffer.

Source

pub fn read_state_mut(&mut self) -> (&mut IO, &mut BytesMut)

Returns io and a mutable reference to the read buffer.

Source

pub fn write_buffer(&self) -> &BytesMut

Returns a reference to the write buffer.

Source

pub fn write_buffer_mut(&mut self) -> &mut BytesMut

Returns a mutable reference to the write buffer.

Source

pub fn into_inner(self) -> IO

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

Source

pub async fn next_with<C: Decoder>( &mut self, codec: &mut C, ) -> Option<Result<C::Item, C::Error>>
where IO: AsyncReadRent,

Equivalent to Stream::next but with custom codec.

Source

pub fn peek_data(&mut self) -> impl Future<Output = Result<&mut [u8]>>
where IO: AsyncReadRent,

Await some new data. Useful to do read timeout.

Source

pub async fn send_with<C, Item>( &mut self, codec: &mut C, item: Item, ) -> Result<(), C::Error>
where IO: AsyncWriteRent, C: Encoder<Item>,

Equivalent to Sink::send but with custom codec.

Trait Implementations§

Source§

impl<IO: AsyncReadRent, Codec> AsyncReadRent for Framed<IO, Codec>

Source§

async fn read<T: IoBufMut>(&mut self, buf: T) -> BufResult<usize, T>

Same as read(2)
Source§

async fn readv<T: IoVecBufMut>(&mut self, buf: T) -> BufResult<usize, T>

Same as readv(2)
Source§

impl<IO: AsyncWriteRent, Codec> AsyncWriteRent for Framed<IO, Codec>

Source§

async fn write<T: IoBuf>(&mut self, buf: T) -> BufResult<usize, T>

Same as write(2)
Source§

async fn writev<T: IoVecBuf>(&mut self, buf_vec: T) -> BufResult<usize, T>

Same as writev(2)
Source§

async fn flush(&mut self) -> Result<()>

Flush buffered data if needed
Source§

async fn shutdown(&mut self) -> Result<()>

Same as shutdown
Source§

impl<T, U> Debug for Framed<T, U>
where T: Debug, U: Debug,

Source§

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

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

impl<IO, Codec, Item> Sink<Item> for Framed<IO, Codec>
where IO: AsyncWriteRent, Codec: Encoder<Item>,

Source§

type Error = <FramedInner<IO, Codec, RWState> as Sink<Item>>::Error

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

async fn send(&mut self, item: Item) -> Result<(), Self::Error>

Send item.
Source§

async fn flush(&mut self) -> Result<(), Self::Error>

Flush any remaining output from this sink.
Source§

async fn close(&mut self) -> Result<(), Self::Error>

Flush any remaining output and close this sink, if necessary.
Source§

impl<Codec: Encoder<Item>, IO: AsyncWriteRent, AnyCodec, Item> SinkWithCodec<Codec, Item> for Framed<IO, AnyCodec>

Source§

async fn send_with<'a>( &'a mut self, codec: &'a mut Codec, item: Item, ) -> Result<(), Codec::Error>

Source§

async fn flush(&mut self) -> Result<(), Codec::Error>

Source§

impl<IO, Codec> Stream for Framed<IO, Codec>
where IO: AsyncReadRent, Codec: Decoder,

Source§

type Item = <FramedInner<IO, Codec, RWState> as Stream>::Item

Values yielded by the stream.
Source§

async fn next(&mut self) -> 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.
Source§

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

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

impl<Codec: Decoder, IO: AsyncReadRent, AnyCodec> StreamWithCodec<Codec> for Framed<IO, AnyCodec>

Source§

type Item = Result<<Codec as Decoder>::Item, <Codec as Decoder>::Error>

Source§

async fn next_with<'a>(&'a mut self, codec: &'a mut Codec) -> Option<Self::Item>

Auto Trait Implementations§

§

impl<IO, Codec> Freeze for Framed<IO, Codec>
where IO: Freeze, Codec: Freeze,

§

impl<IO, Codec> RefUnwindSafe for Framed<IO, Codec>
where IO: RefUnwindSafe, Codec: RefUnwindSafe,

§

impl<IO, Codec> Send for Framed<IO, Codec>
where IO: Send, Codec: Send,

§

impl<IO, Codec> Sync for Framed<IO, Codec>
where IO: Sync, Codec: Sync,

§

impl<IO, Codec> Unpin for Framed<IO, Codec>
where IO: Unpin, Codec: Unpin,

§

impl<IO, Codec> UnwindSafe for Framed<IO, Codec>
where IO: UnwindSafe, Codec: 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<A> AsyncReadRentExt for A
where A: AsyncReadRent + ?Sized,

Source§

async fn read_exact<T>(&mut self, buf: T) -> (Result<usize, Error>, T)
where T: IoBufMut + 'static,

Read until buf capacity is fulfilled
Source§

async fn read_vectored_exact<T>(&mut self, buf: T) -> (Result<usize, Error>, T)
where T: IoVecBufMut + 'static,

Readv until buf capacity is fulfilled
Source§

async fn read_u8(&mut self) -> Result<u8, Error>

Read number in async way
Source§

async fn read_u16(&mut self) -> Result<u16, Error>

Read number in async way
Source§

async fn read_u32(&mut self) -> Result<u32, Error>

Read number in async way
Source§

async fn read_u64(&mut self) -> Result<u64, Error>

Read number in async way
Source§

async fn read_u128(&mut self) -> Result<u16, Error>

Read number in async way
Source§

async fn read_i8(&mut self) -> Result<i8, Error>

Read number in async way
Source§

async fn read_i16(&mut self) -> Result<i16, Error>

Read number in async way
Source§

async fn read_i32(&mut self) -> Result<i32, Error>

Read number in async way
Source§

async fn read_i64(&mut self) -> Result<i64, Error>

Read number in async way
Source§

async fn read_i128(&mut self) -> Result<i128, Error>

Read number in async way
Source§

async fn read_f32(&mut self) -> Result<f32, Error>

Read number in async way
Source§

async fn read_f64(&mut self) -> Result<f64, Error>

Read number in async way
Source§

async fn read_u8_le(&mut self) -> Result<u8, Error>

Read number in async way
Source§

async fn read_u16_le(&mut self) -> Result<u16, Error>

Read number in async way
Source§

async fn read_u32_le(&mut self) -> Result<u32, Error>

Read number in async way
Source§

async fn read_u64_le(&mut self) -> Result<u64, Error>

Read number in async way
Source§

async fn read_u128_le(&mut self) -> Result<u128, Error>

Read number in async way
Source§

async fn read_i8_le(&mut self) -> Result<i8, Error>

Read number in async way
Source§

async fn read_i16_le(&mut self) -> Result<i16, Error>

Read number in async way
Source§

async fn read_i32_le(&mut self) -> Result<i32, Error>

Read number in async way
Source§

async fn read_i64_le(&mut self) -> Result<i64, Error>

Read number in async way
Source§

async fn read_i128_le(&mut self) -> Result<i128, Error>

Read number in async way
Source§

async fn read_f32_le(&mut self) -> Result<f32, Error>

Read number in async way
Source§

async fn read_f64_le(&mut self) -> Result<f64, Error>

Read number in async way
Source§

impl<A> AsyncWriteRentExt for A
where A: AsyncWriteRent + ?Sized,

Source§

async fn write_all<T>(&mut self, buf: T) -> (Result<usize, Error>, T)
where T: IoBuf + 'static,

Write all
Source§

async fn write_vectored_all<T>(&mut self, buf: T) -> (Result<usize, Error>, T)
where T: IoVecBuf + 'static,

Write vectored all
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, A> SinkExt<T> for A
where A: Sink<T>,

Source§

async fn send_and_flush(&mut self, item: T) -> Result<(), <A as Sink<T>>::Error>

Send and flush.
Source§

impl<T> StreamExt for T
where T: Stream,

Source§

fn map<T, F>(self, f: F) -> Map<Self, F>
where F: FnMut(Self::Item) -> T, Self: Sized,

Maps a stream to a stream of its items.
Source§

fn then<Fut, F>(self, f: F) -> Then<Self, F>
where F: FnMut(Self::Item) -> Fut, Fut: Future, Self: Sized,

Computes from this stream’s items new items of a different type using an asynchronous closure.
Source§

fn for_each<Fut, F>(self, f: F) -> impl Future<Output = ()>
where F: FnMut(Self::Item) -> Fut, Fut: Future<Output = ()>, Self: Sized,

Runs this stream to completion, executing the provided asynchronous closure for each element on the stream.
Source§

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

Source§

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>,

Source§

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.