Skip to main content

HpackDecoder

Struct HpackDecoder 

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

A connection-direction HPACK decoder with bounded table and header-list sizes.

Implementations§

Source§

impl HpackDecoder

Source

pub fn new(max_table_size: usize, max_header_list_size: usize) -> HpackDecoder

Creates a decoder with explicit dynamic table and decoded list limits. Each decoded field contributes its name and value octets plus 32 bytes.

§Errors

This function does not return errors.

§Panics

This function does not panic.

Source

pub fn set_max_table_size(&mut self, size: usize)

Changes the permitted table limit after the peer acknowledges SETTINGS. A reduction requires a matching update at the next header block’s start.

§Errors

This function does not return errors.

§Panics

This function does not panic.

Source

pub fn decode( &mut self, block: &[u8], ) -> Result<Vec<(String, String)>, ProtoError>

Decodes one complete header block, preserving order and duplicate fields. A list-size rejection still processes valid table changes through the end of the block, allowing later streams to reuse the compression context. Names and values must be UTF-8 because this API exposes Rust strings. A compression error permanently rejects later blocks because the peer’s table state can no longer be recovered from the malformed block.

§Errors

Returns ProtoError::Hpack for malformed representations, invalid table references, integer overflow, invalid UTF-8, missing required updates, or a compression context that previously failed. Returns ProtoError::HeaderListTooLarge if the decoded list exceeds its limit.

§Panics

This function does not panic.

Trait Implementations§

Source§

impl Debug for HpackDecoder

Source§

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

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

impl Default for HpackDecoder

Source§

fn default() -> HpackDecoder

Returns the “default value” for a type. 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<T> Same for T

Source§

type Output = T

Should always be Self
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.