Struct asynchronous_codec::FramedWrite
source · pub struct FramedWrite<T, E> { /* private fields */ }Expand description
A Sink of frames encoded to an AsyncWrite.
Example
use bytes::Bytes;
use asynchronous_codec::{FramedWrite, BytesCodec};
use futures::SinkExt;
let mut buf = Vec::new();
let mut framed = FramedWrite::new(&mut buf, BytesCodec {});
let bytes = Bytes::from("Hello World!");
framed.send(bytes.clone()).await?;
assert_eq!(&buf[..], &bytes[..]);Implementations
sourceimpl<T, E> FramedWrite<T, E>where
T: AsyncWrite,
E: Encoder,
impl<T, E> FramedWrite<T, E>where
T: AsyncWrite,
E: Encoder,
sourcepub fn new(inner: T, encoder: E) -> Self
pub fn new(inner: T, encoder: E) -> Self
Creates a new FramedWrite transport with the given Encoder.
sourcepub fn from_parts(_: FramedWriteParts<T, E>) -> Self
pub fn from_parts(_: FramedWriteParts<T, E>) -> Self
Creates a new FramedWrite from FramedWriteParts.
See also FramedWrite::into_parts.
sourcepub fn send_high_water_mark(&self) -> usize
pub fn send_high_water_mark(&self) -> usize
High-water mark for writes, in bytes
The send high-water mark prevents the FramedWrite
from accepting additional messages to send when its
buffer exceeds this length, in bytes. Attempts to enqueue
additional messages will be deferred until progress is
made on the underlying AsyncWrite. This applies
back-pressure on fast senders and prevents unbounded
buffer growth.
sourcepub fn set_send_high_water_mark(&mut self, hwm: usize)
pub fn set_send_high_water_mark(&mut self, hwm: usize)
Sets high-water mark for writes, in bytes
The send high-water mark prevents the FramedWrite
from accepting additional messages to send when its
buffer exceeds this length, in bytes. Attempts to enqueue
additional messages will be deferred until progress is
made on the underlying AsyncWrite. This applies
back-pressure on fast senders and prevents unbounded
buffer growth.
The default high-water mark is 2^17 bytes. Applications
which desire low latency may wish to reduce this value.
There is little point to increasing this value beyond
your socket’s SO_SNDBUF size. On linux, this defaults
to 212992 bytes but is user-adjustable.
sourcepub fn into_parts(self) -> FramedWriteParts<T, E>
pub fn into_parts(self) -> FramedWriteParts<T, E>
Consumes the FramedWrite, returning its parts such that
a new FramedWrite may be constructed, possibly with a different encoder.
See also FramedWrite::from_parts.
sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Consumes the FramedWrite, returning its underlying I/O stream.
Note that data that has already been written but not yet flushed
is dropped. To retain any such potentially buffered data, use
FramedWrite::into_parts().
sourcepub fn encoder(&self) -> &E
pub fn encoder(&self) -> &E
Returns a reference to the underlying encoder.
Note that care should be taken to not tamper with the underlying encoder as it may corrupt the stream of frames otherwise being worked with.
sourcepub fn encoder_mut(&mut self) -> &mut E
pub fn encoder_mut(&mut self) -> &mut E
Returns a mutable reference to the underlying encoder.
Note that care should be taken to not tamper with the underlying encoder as it may corrupt the stream of frames otherwise being worked with.
Trait Implementations
sourceimpl<T: Debug, E: Debug> Debug for FramedWrite<T, E>
impl<T: Debug, E: Debug> Debug for FramedWrite<T, E>
sourceimpl<T, E> Deref for FramedWrite<T, E>
impl<T, E> Deref for FramedWrite<T, E>
sourceimpl<T, E> DerefMut for FramedWrite<T, E>
impl<T, E> DerefMut for FramedWrite<T, E>
sourceimpl<T, E> Sink<<E as Encoder>::Item> for FramedWrite<T, E>where
T: AsyncWrite + Unpin,
E: Encoder,
impl<T, E> Sink<<E as Encoder>::Item> for FramedWrite<T, E>where
T: AsyncWrite + Unpin,
E: Encoder,
sourcefn 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 moresourcefn start_send(self: Pin<&mut Self>, item: E::Item) -> Result<(), Self::Error>
fn start_send(self: Pin<&mut Self>, item: E::Item) -> Result<(), Self::Error>
poll_ready which returned Poll::Ready(Ok(())). Read moreimpl<'__pin, T, E> Unpin for FramedWrite<T, E>where
__Origin<'__pin, T, E>: Unpin,
Auto Trait Implementations
impl<T, E> RefUnwindSafe for FramedWrite<T, E>where
E: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, E> Send for FramedWrite<T, E>where
E: Send,
T: Send,
impl<T, E> Sync for FramedWrite<T, E>where
E: Sync,
T: Sync,
impl<T, E> UnwindSafe for FramedWrite<T, E>where
E: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T, Item> SinkExt<Item> for Twhere
T: Sink<Item> + ?Sized,
impl<T, Item> SinkExt<Item> for Twhere
T: Sink<Item> + ?Sized,
sourcefn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>where
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
E: From<Self::Error>,
Self: Sized,
fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>where
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
E: From<Self::Error>,
Self: Sized,
sourcefn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>where
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
Self: Sized,
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>where
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
Self: Sized,
sourcefn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>where
F: FnOnce(Self::Error) -> E,
Self: Sized,
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>where
F: FnOnce(Self::Error) -> E,
Self: Sized,
sourcefn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>where
Self: Sized,
Self::Error: Into<E>,
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>where
Self: Sized,
Self::Error: Into<E>,
Into trait. Read more