smoltcp::storage

Struct Assembler

Source
pub struct Assembler { /* private fields */ }
Expand description

A buffer (re)assembler.

Currently, up to a hardcoded limit of 4 or 32 holes can be tracked in the buffer.

Implementations§

Source§

impl Assembler

Source

pub const fn new() -> Assembler

Create a new buffer assembler.

Source

pub fn clear(&mut self)

Source

pub fn peek_front(&self) -> usize

Return length of the front contiguous range without removing it from the assembler

Source

pub fn is_empty(&self) -> bool

Return whether the assembler contains no data.

Source

pub fn add( &mut self, offset: usize, size: usize, ) -> Result<(), TooManyHolesError>

Add a new contiguous range to the assembler, or return Err(TooManyHolesError) if too many discontinuities are already recorded.

Source

pub fn remove_front(&mut self) -> usize

Remove a contiguous range from the front of the assembler. If no such range, return 0.

Source

pub fn add_then_remove_front( &mut self, offset: usize, size: usize, ) -> Result<usize, TooManyHolesError>

Add a segment, then remove_front.

This is equivalent to calling add then remove_front individually, except it’s guaranteed to not fail when offset = 0. This is required for TCP: we must never drop the next expected segment, or the protocol might get stuck.

Source

pub fn iter_data(&self, first_offset: usize) -> AssemblerIter<'_>

Iterate over all of the contiguous data ranges.

This is used in calculating what data ranges have been received. The offset indicates the number of bytes of contiguous data received before the beginnings of this Assembler.

Data Hole Data |— 100 —|— 200 —|— 100 —|

An offset of 1500 would return the ranges: (1500, 1600), (1800, 1900)

Trait Implementations§

Source§

impl Clone for Assembler

Source§

fn clone(&self) -> Assembler

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Assembler

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Assembler

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Assembler

Source§

fn eq(&self, other: &Assembler) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Assembler

Source§

impl StructuralPartialEq for Assembler

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
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.