Skip to main content

BodyReader

Struct BodyReader 

Source
pub struct BodyReader<D = Vec<u8>> { /* private fields */ }
Expand description

The readable half of a bounded, single-producer body.

Byte limits count data and field name/value bytes; item limits count every frame, including empty data and headers. Oversized frames are rejected rather than waiting forever. Owners may retain additional storage. Dropping/closing the reader abandons queued frames and wakes the writer. A temporarily empty open body is neither ready nor exhausted.

Implementations§

Source§

impl<D: AsRef<[u8]> + Send> BodyReader<D>

Source

pub fn bounded(max_bytes: usize, max_chunks: usize) -> (Self, BodyWriter<D>)

Create independently movable input/output halves. Panics for zero limits.

Source

pub fn with_length( max_bytes: usize, max_chunks: usize, length: u64, ) -> (Self, BodyWriter<D>)

Declare total representation length; protocol framing checks actual size.

Trait Implementations§

Source§

impl<D> Drop for BodyReader<D>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<D: AsRef<[u8]> + Send> ReadableBody for BodyReader<D>

Source§

type Data = D

Application data, without imposing completion-I/O buffer requirements.
Source§

type Error = BodyError

Source§

fn is_ready(&self) -> bool

Whether another read can proceed without waiting for produced data. Read more
Source§

fn is_empty(&self) -> bool

Whether no unread payload frames remain. False can mean unknown; an open queue with no frames is not exhausted. This does not suppress read errors.
Source§

fn length(&self) -> Option<u64>

Total representation length, independent of the current read position.
Source§

fn close(&mut self, error: Option<BodyError>)

Abandon further application reads, optionally reporting their failure. Read more
Source§

async fn read( &mut self, cancellation: &Cancellation, ) -> Result<BodyFrame<D>, BodyError>

Read one owned frame. Pre-cancellation prevents consumption. The caller stops after frame.is_end(); subsequent reads return BodyFrame::End. Headers occur at most once, after all data. Dropping a pending read is not transport retirement, and must not lose an unreturned queued frame.
Source§

fn may_have_trailers(&self) -> bool

Whether this body can emit trailing headers. HTTP/1 needs this before reading to choose chunked framing, even when the data length is known. Returning false promises that no Headers frame will be produced.
Source§

fn is_rewindable(&self) -> bool

Source§

fn rewind(&mut self) -> bool

Restore the read position when supported, reporting success.

Auto Trait Implementations§

§

impl<D> Freeze for BodyReader<D>
where Arc<Shared<D>>: Freeze,

§

impl<D> RefUnwindSafe for BodyReader<D>
where Arc<Shared<D>>: RefUnwindSafe,

§

impl<D> Send for BodyReader<D>
where Arc<Shared<D>>: Send,

§

impl<D> Sync for BodyReader<D>
where Arc<Shared<D>>: Sync,

§

impl<D> Unpin for BodyReader<D>
where Arc<Shared<D>>: Unpin,

§

impl<D> UnsafeUnpin for BodyReader<D>
where Arc<Shared<D>>: UnsafeUnpin,

§

impl<D> UnwindSafe for BodyReader<D>
where Arc<Shared<D>>: UnwindSafe,

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.

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

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.