Struct libp2p_yamux::WindowUpdateMode
source · pub struct WindowUpdateMode(/* private fields */);
Expand description
The window update mode determines when window updates are sent to the remote, giving it new credit to send more data.
Implementations§
source§impl WindowUpdateMode
impl WindowUpdateMode
sourcepub fn on_receive() -> Self
pub fn on_receive() -> Self
The window update mode whereby the remote is given new credit via a window update whenever the current receive window is exhausted when data is received, i.e. this mode cannot exert back-pressure from application code that is slow to read from a substream.
Note: The receive buffer may overflow with this strategy if the receiver is too slow in reading the data from the buffer. The maximum receive buffer size must be tuned appropriately for the desired throughput and level of tolerance for (temporarily) slow receivers.
sourcepub fn on_read() -> Self
pub fn on_read() -> Self
The window update mode whereby the remote is given new credit only when the current receive window is exhausted when data is read from the substream’s receive buffer, i.e. application code that is slow to read from a substream exerts back-pressure on the remote.
Note: If the receive window of a substream on both peers is exhausted and both peers are blocked on sending data before reading from the stream, a deadlock occurs. To avoid this situation, reading from a substream should never be blocked on writing to the same substream.
Note: With this strategy, there is usually no point in the receive buffer being larger than the window size.
Auto Trait Implementations§
impl Freeze for WindowUpdateMode
impl RefUnwindSafe for WindowUpdateMode
impl Send for WindowUpdateMode
impl Sync for WindowUpdateMode
impl Unpin for WindowUpdateMode
impl UnwindSafe for WindowUpdateMode
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more