Struct de_net::connection::databuf::DataBuf

source ·
pub(super) struct DataBuf {
    data: VecDeque<u8>,
    slots: VecDeque<Slot>,
    ordinals: AHashMap<PackageId, usize>,
}
Expand description

Data buffer based on a ring-buffer.

The underling data structures are optimized with the assumption that data are inserted and removed in roughly FIFO manner.

Fields§

§data: VecDeque<u8>§slots: VecDeque<Slot>§ordinals: AHashMap<PackageId, usize>

Mapping from datagram ID to datagram ordinal. See Slot::ordinal.

Implementations§

source§

impl DataBuf

source

pub(super) fn new() -> Self

source

pub(super) fn push(&mut self, id: PackageId, data: &[u8])

Stores new data to the buffer.

§Panics

Panics if data with the same id is already stored.

source

pub(super) fn get_and_remove( &mut self, id: PackageId, buf: &mut [u8] ) -> Option<usize>

See Self::get and Self::remove.

§Panics

Panics if buf len is smaller than length of found data.

source

pub(super) fn get(&self, id: PackageId, buf: &mut [u8]) -> Option<usize>

Searches for data stored under ID id, and if found, writes the data to buf and returns length of the data.

§Panics

Panics if buf len is smaller than length of found data.

source

pub(super) fn remove(&mut self, id: PackageId)

Removes data stored with ID id or does nothing if such data do not exist.

source

fn slot_index(&self, id: PackageId) -> Option<usize>

Get index (withing slots deque) of the slot with ID id.

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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>,

§

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>,

§

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

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more