Address review comments

This commit is contained in:
fanyang
2026-05-04 10:42:19 +08:00
parent 6229229b31
commit 9d7a938e93
2 changed files with 42 additions and 16 deletions
+40 -14
View File
@@ -46,6 +46,29 @@ fn supported_compression_algorithms() -> &'static str {
}
}
fn compression_help() -> String {
t!(
"core_clap.compression",
algorithms = supported_compression_algorithms()
)
.to_string()
}
fn parse_compression_algorithm(compression: &str) -> anyhow::Result<CompressionAlgoPb> {
match compression {
"none" => Ok(CompressionAlgoPb::None),
#[cfg(feature = "zstd")]
"zstd" => Ok(CompressionAlgoPb::Zstd),
#[cfg(feature = "lzo")]
"lzo" => Ok(CompressionAlgoPb::Lzo),
_ => anyhow::bail!(
"unknown compression algorithm: {}, supported: {}",
compression,
supported_compression_algorithms()
),
}
}
#[cfg(target_os = "windows")]
windows_service::define_windows_service!(ffi_service_main, win_service_main);
@@ -522,7 +545,7 @@ struct NetworkOptions {
#[arg(
long,
env = "ET_COMPRESSION",
help = t!("core_clap.compression").to_string(),
help = compression_help(),
)]
compression: Option<String>,
@@ -1115,19 +1138,7 @@ impl NetworkOptions {
f.need_p2p = self.need_p2p.unwrap_or(f.need_p2p);
f.multi_thread = self.multi_thread.unwrap_or(f.multi_thread);
if let Some(compression) = &self.compression {
f.data_compress_algo = match compression.as_str() {
"none" => CompressionAlgoPb::None,
#[cfg(feature = "zstd")]
"zstd" => CompressionAlgoPb::Zstd,
#[cfg(feature = "lzo")]
"lzo" => CompressionAlgoPb::Lzo,
_ => panic!(
"unknown compression algorithm: {}, supported: {}",
compression,
supported_compression_algorithms()
),
}
.into();
f.data_compress_algo = parse_compression_algorithm(compression)?.into();
}
f.bind_device = self.bind_device.unwrap_or(f.bind_device);
f.enable_kcp_proxy = self.enable_kcp_proxy.unwrap_or(f.enable_kcp_proxy);
@@ -1640,6 +1651,21 @@ async fn validate_config(cli: &Cli) -> anyhow::Result<()> {
mod tests {
use super::*;
#[test]
fn test_compression_help_uses_supported_algorithms() {
assert!(compression_help().contains(supported_compression_algorithms()));
}
#[test]
fn test_parse_compression_algorithm_rejects_unknown() {
let err = parse_compression_algorithm("snappy")
.unwrap_err()
.to_string();
assert!(err.contains("snappy"));
assert!(err.contains(supported_compression_algorithms()));
}
#[test]
fn test_parse_listeners() {
type IpSchemeMap = fn(&IpScheme) -> String;