Skip to main content

ReliableSender

Struct ReliableSender 

Source
pub struct ReliableSender<P: Send + Sync> { /* private fields */ }
Expand description

Retransmit-on-timeout sender that tracks unacknowledged messages and re-queues them after an RTT-based interval.

Implementations§

Source§

impl<P: Send + Sync> ReliableSender<P>

Source

pub fn new(rtt_resend_factor: f32, max_queue_depth: Option<usize>) -> Self

Creates a ReliableSender with the given RTT resend factor and optional queue-depth cap.

Source

pub fn take_next_messages(&mut self) -> VecDeque<(MessageIndex, P)>

Drains and returns all messages currently staged for transmission this tick.

Source

pub fn deliver_message(&mut self, message_index: &MessageIndex) -> Option<P>

Acknowledges delivery of message_index, removing it from the retransmit buffer and returning the message.

Trait Implementations§

Source§

impl<P: Send + Sync + Clone> ChannelSender<P> for ReliableSender<P>

Source§

fn send_message(&mut self, message: P) -> bool

Queues a Message to be transmitted to the remote host into an internal buffer. Returns true if the message was accepted, false if the channel’s queue was full and the message was dropped (reliable) or the oldest entry was evicted to make room (unreliable).
Source§

fn collect_messages(&mut self, now: &Instant, rtt_millis: &f32)

For reliable channels, will collect any Messages that need to be resent
Source§

fn has_messages(&self) -> bool

Returns true if there are queued Messages ready to be written
Source§

fn notify_message_delivered(&mut self, message_index: &MessageIndex)

Called when it receives acknowledgement that a Message has been received

Auto Trait Implementations§

§

impl<P> Freeze for ReliableSender<P>

§

impl<P> RefUnwindSafe for ReliableSender<P>
where P: RefUnwindSafe,

§

impl<P> Send for ReliableSender<P>

§

impl<P> Sync for ReliableSender<P>

§

impl<P> Unpin for ReliableSender<P>
where P: Unpin,

§

impl<P> UnsafeUnpin for ReliableSender<P>

§

impl<P> UnwindSafe for ReliableSender<P>
where P: 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>,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V