#[non_exhaustive]pub enum FrameDecoderError {
Show 24 variants
ReadFrameHeaderError(ReadFrameHeaderError),
FrameHeaderError(FrameHeaderError),
WindowSizeTooBig {
requested: u64,
},
DictionaryDecodeError(DictionaryDecodeError),
FailedToReadBlockHeader(BlockHeaderReadError),
FailedToReadBlockBody(DecodeBlockContentError),
FailedToReadChecksum(Error),
NotYetInitialized,
FailedToInitialize(FrameHeaderError),
FailedToDrainDecodebuffer(Error),
FailedToSkipFrame,
TargetTooSmall,
FrameContentSizeMismatch {
declared: u64,
produced: u64,
},
ChecksumMismatch {
expected: u32,
calculated: u32,
},
DictNotProvided {
dict_id: u32,
},
DictIdMismatch {
expected: u32,
provided: u32,
},
DictAlreadyRegistered {
dict_id: u32,
},
UnexpectedDictId {
expected: Option<u32>,
found: Option<u32>,
},
UnexpectedWindowDescriptor {
expected: u8,
found: Option<u8>,
},
FailedToReadBlockHeaderAt {
source: BlockHeaderReadError,
block_index: u32,
frame_offset: u32,
},
FailedToReadBlockBodyAt {
source: DecodeBlockContentError,
block_index: u32,
frame_offset: u32,
block: FrameBlock,
},
InvalidBlockRange {
start_block: u32,
end_block: u32,
},
ResumeWindowTooShort {
got: usize,
need: usize,
},
ResumeFrameMismatch,
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ReadFrameHeaderError(ReadFrameHeaderError)
FrameHeaderError(FrameHeaderError)
WindowSizeTooBig
DictionaryDecodeError(DictionaryDecodeError)
FailedToReadBlockHeader(BlockHeaderReadError)
FailedToReadBlockBody(DecodeBlockContentError)
FailedToReadChecksum(Error)
NotYetInitialized
FailedToInitialize(FrameHeaderError)
FailedToDrainDecodebuffer(Error)
FailedToSkipFrame
TargetTooSmall
FrameContentSizeMismatch
Decoded block sizes don’t sum to the frame’s declared
frame_content_size (either a block claims to expand past
FCS, or the stream ends before reaching FCS). Indicates a
malformed or corrupt frame — distinct from
Self::TargetTooSmall (which is the caller’s
responsibility) so callers can tell decoder-side issues
apart from their own buffer sizing mistakes.
ChecksumMismatch
The frame carried a trailing XXH64 content checksum and the decoder
was set to ContentChecksum::Verify,
but the digest computed over the decompressed output did not match the
stored value. Indicates corruption in the compressed stream or its
trailing checksum. expected is the value read from the frame tail;
calculated is the digest the decoder computed (both low 32 bits).
DictNotProvided
DictIdMismatch
DictAlreadyRegistered
UnexpectedDictId
lsm only.Frame header’s dict_id did not match the value pinned via
FrameDecoder::expect_dict_id. Returned BEFORE any block
decode and BEFORE any output is produced — no XXH64 init,
no partial output. Scratch buffer allocation / reservation
for the decode pipeline happens during frame-header parsing,
which is already complete when this validation fires, so
the cost of scratch sizing is paid even on a mismatched
header. expected is the pinned value (Some(0) is
treated as “no dictionary expected”, matching a frame whose
header omits the optional Dictionary_ID field); found
reports what the frame actually carried (None when the
header omits the field, Some(id) when it does not).
UnexpectedWindowDescriptor
lsm only.Frame header’s raw Window_Descriptor byte did not match
the value pinned via FrameDecoder::expect_window_descriptor.
Returned BEFORE any block decode work. Single-segment frames
(which omit the Window_Descriptor byte from the wire) are
reported via found: None so callers can distinguish
“wrong descriptor” from “no descriptor on the wire”.
FailedToReadBlockHeaderAt
lsm only.Block-precise variant of Self::FailedToReadBlockHeader: a block
header read failed and the decoder captured WHERE. block_index is
the 0-based index of the failing block in the frame; frame_offset
is the frame-absolute byte offset of that block’s Block_Header
(matches FrameEmitInfo.blocks[block_index].offset_in_frame from the
encode side). Lets per-block recovery (ECC repair) target the one bad
block instead of re-fetching the whole frame.
FailedToReadBlockBodyAt
lsm only.Block-precise variant of Self::FailedToReadBlockBody: a block
body decode failed. Carries the same block_index / frame_offset
coordinates plus the failing block’s structural metadata
(FrameBlock) reconstructed from its header, so a consumer can
locate and repair exactly this block.
InvalidBlockRange
lsm only.FrameDecoder::decode_blocks_partial was called with
start_block > end_block (the half-open block range is
empty-or-inverted and cannot describe a valid subset). API
misuse, surfaced as Err rather than a PartialDecode
outcome — distinct from a corrupt-frame stop, which is
reported via PartialDecode::stopped_at.
ResumeWindowTooShort
lsm only.A resuming FrameDecoder::decode_blocks_partial was given a
window_prime (via ResumeInput) shorter than the match window the
resume block can reach back into. The resumed decode would read past the
primed history and silently mis-resolve matches, so it is rejected up
front. got is the supplied prime length; need is the required
minimum (min(window_size, output_offset)).
ResumeFrameMismatch
lsm only.A resuming FrameDecoder::decode_blocks_partial was given a
ResumeInput whose ResumeState was captured from a frame with a
different decode-relevant shape (window size, dictionary id,
single-segment flag, content-checksum flag, or magicless mode) than the
frame currently reset into the
decoder. Applying entropy/repcode state across mismatched frames would
yield byte-wrong output, so it is rejected up front.
Trait Implementations§
Source§impl Debug for FrameDecoderError
impl Debug for FrameDecoderError
Source§impl Display for FrameDecoderError
impl Display for FrameDecoderError
Source§impl Error for FrameDecoderError
Available on crate feature std only.
impl Error for FrameDecoderError
std only.Source§fn source(&self) -> Option<&(dyn StdError + 'static)>
fn source(&self) -> Option<&(dyn StdError + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()