Skip to main content

DecodingPipeline

Struct DecodingPipeline 

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

Main decoding pipeline.

Implementations§

Source§

impl DecodingPipeline

Source

pub fn new(config: DecodingConfig) -> Self

Creates a new decoding pipeline.

Source

pub const fn skipped_verifications(&self) -> u64

br-asupersync-f4mdcr: total number of feed() calls that accepted a symbol with authentication INTENTIONALLY skipped because config.verify_auth = false. Operators can scrape this counter via the runtime’s observability surface to alert on misconfigured pipelines that quietly disable auth in production. Pre-fix the skip was silent — no log, no counter, no observability hook fired — so a deployment that misset verify_auth = false accepted unauthenticated symbols without any operator-visible signal.

Source

pub fn with_auth(config: DecodingConfig, ctx: SecurityContext) -> Self

Creates a new decoding pipeline with authentication enabled.

Source

pub fn set_object_params( &mut self, params: ObjectParams, ) -> Result<(), DecodingError>

Sets object parameters (object size, symbol size, and block layout).

Source

pub fn block_accept_cap(&self) -> usize

The effective per-block symbol-accept cap (0 means unbounded).

With max_buffered_symbols == 0, set_object_params sizes this to cover K (plus repair slack) via configure_auto_buffer_limit; with a fixed nonzero max_buffered_symbols it stays at that value and does not scale with K.

Source

pub fn feed( &mut self, auth_symbol: AuthenticatedSymbol, ) -> Result<SymbolAcceptResult, DecodingError>

Feeds a received authenticated symbol into the pipeline.

Source

pub fn feed_batch( &mut self, symbols: impl Iterator<Item = AuthenticatedSymbol>, ) -> Vec<Result<SymbolAcceptResult, DecodingError>>

Feeds a batch of symbols.

Source

pub fn is_complete(&self) -> bool

Returns true if all expected blocks are decoded.

Source

pub fn progress(&self) -> DecodingProgress

Returns decoding progress.

Source

pub fn block_status(&self, sbn: u8) -> Option<BlockStatus>

Returns per-block status if known.

Source

pub fn into_data(self) -> Result<Vec<u8>, DecodingError>

Consumes the pipeline and returns decoded data if complete.

Source

pub fn missing_source_symbols(&self, limit: usize) -> Vec<MissingSourceSymbol>

Returns missing systematic source symbols for incomplete blocks.

This is used by ATP-RQ as a cheap first feedback step: retransmitting a sparse set of missing systematic symbols avoids constructing the CPU-heavy RaptorQ repair encoder when the receiver only dropped a few datagrams. limit == 0 means unbounded.

Trait Implementations§

Source§

impl Debug for DecodingPipeline

Source§

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

Formats the value using the given formatter. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V