kona_protocol/compression/
types.rs

1//! Compression types.
2
3use crate::BrotliLevel;
4use alloc::borrow::Borrow;
5
6/// The result from compressing data.
7pub type CompressorResult<T> = Result<T, CompressorError>;
8
9/// An error returned by the compressor.
10#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
11pub enum CompressorError {
12    /// Thrown when the compressor is full.
13    #[error("compressor is full")]
14    Full,
15    /// Brotli compression failed.
16    #[error("brotli compression failed")]
17    Brotli,
18}
19
20/// The type of compressor to use.
21///
22/// See: <https://github.com/ethereum-optimism/optimism/blob/042433b89ce38ccc15456e9673829f6783bb97ac/op-batcher/compressor/compressors.go#L20>
23#[derive(Debug, Clone, Copy, PartialEq, Eq)]
24pub enum CompressorType {
25    /// The ratio compression.
26    Ratio,
27    /// The shadow compression.
28    Shadow,
29}
30
31/// The compression algorithm type.
32///
33/// See:
34#[derive(Debug, Clone, Copy, PartialEq, Eq)]
35pub enum CompressionAlgo {
36    /// The fastest brotli compression level.
37    Brotli9,
38    /// The default brotli compression level.
39    Brotli10,
40    /// The best brotli compression level.
41    Brotli11,
42    /// The zlib compression.
43    Zlib,
44}
45
46impl<A: Borrow<CompressionAlgo>> From<A> for BrotliLevel {
47    fn from(algo: A) -> Self {
48        match algo.borrow() {
49            CompressionAlgo::Brotli9 => Self::Brotli9,
50            CompressionAlgo::Brotli11 => Self::Brotli11,
51            _ => Self::Brotli10,
52        }
53    }
54}