pub struct Reassembler {
segs: Vec<(u32, Vec<u8>)>,
bytes: usize,
}Expand description
順序外セグメントを seq 昇順で保持する。
Fields§
§segs: Vec<(u32, Vec<u8>)>(seq, data) を seq 昇順で保持する。
bytes: usizeImplementations§
Source§impl Reassembler
impl Reassembler
pub fn new() -> Self
pub fn is_empty(&self) -> bool
Sourcepub fn insert(
&mut self,
seq: u32,
data: &[u8],
) -> Result<InsertOutcome, ReassemblyError>
pub fn insert( &mut self, seq: u32, data: &[u8], ) -> Result<InsertOutcome, ReassemblyError>
順序外セグメントを保持する。
空ペイロードは黙って戻らず、エラーログを出して Err を返す
(呼び出し側のバグを握り潰さないため)。
Sourcepub fn pop_contiguous(&mut self, rcv_nxt: u32) -> (u32, Vec<u8>)
pub fn pop_contiguous(&mut self, rcv_nxt: u32) -> (u32, Vec<u8>)
rcv_nxt から連続する分を取り出し、新しい rcv_nxt とデータを返す。
欠落が埋まった瞬間に、そこから繋がる全セグメントをまとめて返す。
連続していなければ空を返し rcv_nxt は据え置く。
Sourcepub fn drop_before(&mut self, rcv_nxt: u32) -> usize
pub fn drop_before(&mut self, rcv_nxt: u32) -> usize
rcv_nxt より前(既に受信済み)のセグメントを捨て、捨てた数を返す。
再送で重複到着したものが溜まり続けるのを防ぐ。
Trait Implementations§
Source§impl Debug for Reassembler
impl Debug for Reassembler
Source§impl Default for Reassembler
impl Default for Reassembler
Source§fn default() -> Reassembler
fn default() -> Reassembler
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for Reassembler
impl RefUnwindSafe for Reassembler
impl Send for Reassembler
impl Sync for Reassembler
impl Unpin for Reassembler
impl UnsafeUnpin for Reassembler
impl UnwindSafe for Reassembler
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