use std::collections::BTreeMap; use serde::Deserialize; use url::Url; #[derive(Debug, Clone, Deserialize, Hash, Eq, PartialEq)] pub struct TrackerRedisInfo { pub host: String, pub pass: Option, pub port: u16, } impl From for TrackerRedisInfo { fn from(value: Url) -> Self { let port = value.port().unwrap_or(6379); let host = value.host().map(|v| v.to_string()).unwrap_or_else(|| "127.0.0.1".to_string()); let pass = value.password().map(|v| v.to_string()); Self { host, pass, port, } } } #[derive(Debug, Clone, Deserialize)] pub struct TrackerOffloadInfo { pub high: usize, pub low: usize, pub pipelinesize: Option, } #[derive(Debug, Clone, Deserialize)] pub struct TrackerInfo { pub title: String, pub min_script_version: String, pub redis: Option, pub max_claims_hard: Option, pub max_claims_soft: Option, pub offload: Option, } pub type TrackerMap = BTreeMap;