pub struct LiteReceiver<const REASM: usize, const WIN: usize, const MTU: usize> { /* private fields */ }Expand description
Half-memory backend — reorder and reassembly share one buffer.
Use when memory is scarce: segments are placed directly at
their final byte offset in a single flat buffer, so there is
no separate reorder stage. Static memory is just REASM.
Trade-off: each delivery requires an O(REASM) byte shift to reclaim the consumed prefix, and OOO insert is O(WIN) for gap bookkeeping. Segments tile at MTU boundaries, so each slot reserves a full MTU regardless of payload size.
REASM— reassembly buffer size (the only buffer)WIN— maximum gap tracker intervalsMTU— maximum segment payload size
Trait Implementations§
Source§impl<const REASM: usize, const WIN: usize, const MTU: usize> ReceiverBackend for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> ReceiverBackend for LiteReceiver<REASM, WIN, MTU>
Source§fn handle_data(
&mut self,
seq: SequenceCount,
flags: SequenceFlag,
payload: &[u8],
) -> Result<DataOutcome, ReceiverError>
fn handle_data( &mut self, seq: SequenceCount, flags: SequenceFlag, payload: &[u8], ) -> Result<DataOutcome, ReceiverError>
Process a received data packet.
Source§fn skip_gap(&mut self) -> Result<GapOutcome, ReceiverError>
fn skip_gap(&mut self) -> Result<GapOutcome, ReceiverError>
Skip the current gap (advance past missing packets).
Source§fn take_message(&mut self) -> Option<&[u8]>
fn take_message(&mut self) -> Option<&[u8]>
Take the complete message.
Source§fn has_message(&self) -> bool
fn has_message(&self) -> bool
Check if there’s a complete message ready.
Source§fn message_len(&self) -> Option<usize>
fn message_len(&self) -> Option<usize>
Returns the length of the pending message, if any.
Source§fn consume_message<Ret>(&mut self, f: impl FnOnce(&[u8]) -> Ret) -> Option<Ret>
fn consume_message<Ret>(&mut self, f: impl FnOnce(&[u8]) -> Ret) -> Option<Ret>
Pass the pending message to
f and mark it consumed.Source§fn expected_seq(&self) -> SequenceCount
fn expected_seq(&self) -> SequenceCount
Get the current expected sequence number.
Source§fn recv_bitmap(&self) -> u16
fn recv_bitmap(&self) -> u16
Get the selective ACK bitmap.
Auto Trait Implementations§
impl<const REASM: usize, const WIN: usize, const MTU: usize> Freeze for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> RefUnwindSafe for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> Send for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> Sync for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> Unpin for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> UnsafeUnpin for LiteReceiver<REASM, WIN, MTU>
impl<const REASM: usize, const WIN: usize, const MTU: usize> UnwindSafe for LiteReceiver<REASM, WIN, MTU>
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
Mutably borrows from an owned value. Read more