Pumpkin/pumpkin-config/src/compression.rs
2024-10-12 17:39:43 +02:00

47 lines
1.2 KiB
Rust

use serde::{Deserialize, Serialize};
use serde_inline_default::serde_inline_default;
#[serde_inline_default]
#[derive(Deserialize, Serialize)]
/// Packet compression
pub struct CompressionConfig {
/// Wether compression is enabled
#[serde_inline_default(true)]
pub enabled: bool,
#[serde(flatten)]
#[serde(default)]
pub compression_info: CompressionInfo,
}
#[serde_inline_default]
#[derive(Deserialize, Serialize, Clone)]
/// We have this in a Seperate struct so we can use it outside of the Config
pub struct CompressionInfo {
/// The compression threshold used when compression is enabled
#[serde_inline_default(256)]
pub threshold: u32,
/// A value between 0..9
/// 1 = Optimize for the best speed of encoding.
/// 9 = Optimize for the size of data being encoded.
#[serde_inline_default(4)]
pub level: u32,
}
impl Default for CompressionInfo {
fn default() -> Self {
Self {
threshold: 256,
level: 4,
}
}
}
impl Default for CompressionConfig {
fn default() -> Self {
Self {
enabled: true,
compression_info: Default::default(),
}
}
}