pub struct QpackDynamicTable<'storage, 'entries> { /* private fields */ }Expand description
Caller-owned, allocation-free RFC 9204 dynamic-table storage.
Active entries and their bytes are packed newest first. Absolute indexes begin at zero and are never reset by eviction or capacity changes.
Implementations§
Source§impl<'storage, 'entries> QpackDynamicTable<'storage, 'entries>
impl<'storage, 'entries> QpackDynamicTable<'storage, 'entries>
Sourcepub fn new(
storage: &'storage mut [u8],
entries: &'entries mut [QpackDynamicTableEntry],
) -> Self
pub fn new( storage: &'storage mut [u8], entries: &'entries mut [QpackDynamicTableEntry], ) -> Self
Creates an empty table backed by caller-supplied byte and metadata storage.
Sourcepub const fn storage_capacity(&self) -> usize
pub const fn storage_capacity(&self) -> usize
Returns the greatest RFC dynamic-table capacity the supplied stores support.
Sourcepub const fn insert_count(&self) -> u64
pub const fn insert_count(&self) -> u64
Returns the number of successful insertions since this table was created.
Sourcepub fn oldest_active_absolute(&self) -> Option<u64>
pub fn oldest_active_absolute(&self) -> Option<u64>
Returns the oldest active zero-based absolute index, if any.
Sourcepub fn entry_size(
name: &[u8],
value: &[u8],
) -> Result<usize, QpackDynamicTableError>
pub fn entry_size( name: &[u8], value: &[u8], ) -> Result<usize, QpackDynamicTableError>
Calculates an RFC 9204 entry size from opaque name and value bytes.
Sourcepub fn set_capacity<F>(
&mut self,
capacity: usize,
evictable: F,
) -> Result<(), QpackDynamicTableError>
pub fn set_capacity<F>( &mut self, capacity: usize, evictable: F, ) -> Result<(), QpackDynamicTableError>
Updates capacity, evicting the oldest entries allowed by evictable as needed.
Sourcepub fn insert<F>(
&mut self,
name: &[u8],
value: &[u8],
evictable: F,
) -> Result<u64, QpackDynamicTableError>
pub fn insert<F>( &mut self, name: &[u8], value: &[u8], evictable: F, ) -> Result<u64, QpackDynamicTableError>
Copies a field into the table as the newest entry and returns its absolute index.
Sourcepub fn get_absolute(
&self,
absolute: u64,
) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
pub fn get_absolute( &self, absolute: u64, ) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
Resolves a zero-based absolute index to an active borrowed header field.
Sourcepub fn get_encoder_relative(
&self,
relative: u64,
) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
pub fn get_encoder_relative( &self, relative: u64, ) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
Resolves an encoder-stream relative index to an active borrowed header field.
Sourcepub fn get_field_relative(
&self,
required_insert_count: u64,
base: u64,
relative: u64,
) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
pub fn get_field_relative( &self, required_insert_count: u64, base: u64, relative: u64, ) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
Resolves a field-section relative index to an active borrowed header field.
Sourcepub fn get_post_base(
&self,
required_insert_count: u64,
base: u64,
post_base: u64,
) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
pub fn get_post_base( &self, required_insert_count: u64, base: u64, post_base: u64, ) -> Result<QpackHeaderFieldRef<'_>, QpackDynamicTableError>
Resolves a post-base index to an active borrowed header field.