Struct etherparse::io::LimitedReader
source · pub struct LimitedReader<T> { /* private fields */ }
Available on crate feature
std
only.Expand description
Encapsulated reader with an maximum allowed read length.
This struct is used to limit data reads by lower protocol layers (e.g. the payload_len in an IPv6Header limits how much data should be read by the following layers).
An crate::err::LenError
is returned as soon as more than the
maximum read len is read.
Implementations§
source§impl<T: Read + Sized> LimitedReader<T>
impl<T: Read + Sized> LimitedReader<T>
sourcepub fn new(
reader: T,
max_len: usize,
len_source: LenSource,
layer_offset: usize,
layer: Layer
) -> LimitedReader<T>
pub fn new( reader: T, max_len: usize, len_source: LenSource, layer_offset: usize, layer: Layer ) -> LimitedReader<T>
Setup a new limited reader.
sourcepub fn len_source(&self) -> LenSource
pub fn len_source(&self) -> LenSource
Source of the maximum length (used for len error).
sourcepub fn layer_offset(&self) -> usize
pub fn layer_offset(&self) -> usize
Offset of the layer that is currently read (used for len error).
sourcepub fn start_layer(&mut self, layer: Layer)
pub fn start_layer(&mut self, layer: Layer)
Set current position as starting position for a layer.
sourcepub fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), LimitedReadError>
pub fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), LimitedReadError>
Try read the given buf length from the reader.
Triggers an len error if the
sourcepub fn take_reader(self) -> T
pub fn take_reader(self) -> T
Consumes LimitedReader and returns the reader.
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for LimitedReader<T>where
T: Freeze,
impl<T> RefUnwindSafe for LimitedReader<T>where
T: RefUnwindSafe,
impl<T> Send for LimitedReader<T>where
T: Send,
impl<T> Sync for LimitedReader<T>where
T: Sync,
impl<T> Unpin for LimitedReader<T>where
T: Unpin,
impl<T> UnwindSafe for LimitedReader<T>where
T: UnwindSafe,
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