use bitcode::{Decode, Encode};
use crate::estimator::add_policy_estimator::DictionaryAddPolicy;
#[derive(Encode, Decode, Debug, Copy, Clone, PartialEq, Eq, Default)]
pub enum MatchingType {
#[default]
Greedy,
Lazy {
good_length: u16,
max_lazy: u16,
},
}
pub struct PreflateParserConfig {
pub match_type: MatchingType,
pub dictionary_add_policy: DictionaryAddPolicy,
pub nice_length: u32,
pub max_chain: u32,
}
pub const ZLIB_PREFLATE_PARSER_SETTINGS: [PreflateParserConfig; 3] = [
PreflateParserConfig {
match_type: MatchingType::Greedy,
dictionary_add_policy: DictionaryAddPolicy::AddFirst(4),
nice_length: 8,
max_chain: 4,
},
PreflateParserConfig {
match_type: MatchingType::Greedy,
dictionary_add_policy: DictionaryAddPolicy::AddFirst(5),
nice_length: 16,
max_chain: 8,
},
PreflateParserConfig {
match_type: MatchingType::Greedy,
dictionary_add_policy: DictionaryAddPolicy::AddFirst(6),
nice_length: 32,
max_chain: 32,
},
];
pub const SLOW_PREFLATE_PARSER_SETTINGS: [PreflateParserConfig; 6] = [
PreflateParserConfig {
match_type: MatchingType::Lazy {
good_length: 4,
max_lazy: 4,
},
dictionary_add_policy: DictionaryAddPolicy::AddAll,
nice_length: 16,
max_chain: 16,
},
PreflateParserConfig {
match_type: MatchingType::Lazy {
good_length: 8,
max_lazy: 16,
},
dictionary_add_policy: DictionaryAddPolicy::AddAll,
nice_length: 32,
max_chain: 32,
},
PreflateParserConfig {
match_type: MatchingType::Lazy {
good_length: 8,
max_lazy: 16,
},
dictionary_add_policy: DictionaryAddPolicy::AddAll,
nice_length: 128,
max_chain: 128,
},
PreflateParserConfig {
match_type: MatchingType::Lazy {
good_length: 8,
max_lazy: 32,
},
dictionary_add_policy: DictionaryAddPolicy::AddAll,
nice_length: 128,
max_chain: 256,
},
PreflateParserConfig {
match_type: MatchingType::Lazy {
good_length: 32,
max_lazy: 128,
},
dictionary_add_policy: DictionaryAddPolicy::AddAll,
nice_length: 258,
max_chain: 1024,
},
PreflateParserConfig {
match_type: MatchingType::Lazy {
good_length: 32,
max_lazy: 258,
},
dictionary_add_policy: DictionaryAddPolicy::AddAll,
nice_length: 258,
max_chain: 4096,
}, ];