Skip to main content

Payload

Struct Payload 

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

A buffered stream of an HTTP/1 request body’s decoded bytes.

Each item is either a body chunk or a PayloadError. Normal body completion closes the stream, after which receiving returns None. A payload error is yielded once before the stream terminates.

The HTTP/1 dispatcher stops reading body data while this stream’s buffer is full. Consuming items therefore releases transport-level backpressure. Dropping the stream before the complete body has been decoded prevents the connection from being reused and causes the dispatcher to disconnect it.

Dereferences to the underlying bstream::Receiver.

Implementations§

Source§

impl Payload

Source

pub fn trailers(&self) -> Option<HeaderMap>

Returns the trailer fields of a chunked payload.

Trailers are available once the payload is complete, None is returned if the payload is not complete or has no trailers.

Methods from Deref<Target = Receiver<PayloadError>>§

Source

pub fn set_watermarks(&self, high: u32, low: u32)

Sets the sender backpressure watermarks.

Once buffered data reaches high bytes, Sender::poll_ready stops reporting Status::Ready until the receiver drains the buffer to low bytes or less, so the sender is not woken for every consumed chunk. low is capped below high.

Sending does not enforce the watermarks, so producers must cooperate by waiting for readiness. Changing the watermarks immediately updates and, when needed, wakes sender readiness: the sender is ready if buffered data is below high. The defaults are 32 KiB and 16 KiB.

Source

pub fn max_buffer_size(&self, size: usize)

👎Deprecated since 4.2.0:

Use Receiver::set_watermarks() instead

Sets the sender backpressure threshold.

Sets the high watermark to size and the low watermark to half of it.

Source

pub fn put(&self, data: Bytes)

Puts previously read data back at the front of the stream.

This may grow the buffer past its readiness threshold.

Source

pub fn is_eof(&self) -> bool

Returns true once EOF has been marked.

Buffered chunks may still be available after this returns true.

Source

pub async fn read(&self) -> Option<Result<Bytes, E>>

Waits for and returns the next chunk, stream error, or EOF.

Source

pub fn poll_read(&self, cx: &mut Context<'_>) -> Poll<Option<Result<Bytes, E>>>

Polls for the next chunk, stream error, or EOF.

Trait Implementations§

Source§

impl Debug for Payload

Source§

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

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

impl Deref for Payload

Source§

type Target = Receiver<PayloadError>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl From<Payload> for Payload

Source§

fn from(v: Payload) -> Self

Converts to this type from the input type.
Source§

impl From<Receiver<PayloadError>> for Payload

Source§

fn from(rx: Receiver<PayloadError>) -> Self

Converts to this type from the input type.
Source§

impl Stream for Payload

Source§

type Item = Result<Bytes, PayloadError>

Values yielded by the stream.
Source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more

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.

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.
§

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

§

type Ok = T

The type of successful values yielded by this future
§

type Error = E

The type of failures yielded by this future
§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more