You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

43 rivejä
1.1 KiB

  1. use std::collections::BTreeMap;
  2. use serde::Deserialize;
  3. use url::Url;
  4. #[derive(Debug, Clone, Deserialize, Hash, Eq, PartialEq)]
  5. pub struct TrackerRedisInfo {
  6. pub host: String,
  7. pub pass: Option<String>,
  8. pub port: u16,
  9. }
  10. impl From<Url> for TrackerRedisInfo {
  11. fn from(value: Url) -> Self {
  12. let port = value.port().unwrap_or(6379);
  13. let host = value.host().map(|v| v.to_string()).unwrap_or_else(|| "127.0.0.1".to_string());
  14. let pass = value.password().map(|v| v.to_string());
  15. Self {
  16. host,
  17. pass,
  18. port,
  19. }
  20. }
  21. }
  22. #[derive(Debug, Clone, Deserialize)]
  23. pub struct TrackerOffloadInfo {
  24. pub high: usize,
  25. pub low: usize,
  26. pub pipelinesize: Option<usize>,
  27. }
  28. #[derive(Debug, Clone, Deserialize)]
  29. pub struct TrackerInfo {
  30. pub title: String,
  31. pub min_script_version: String,
  32. pub redis: Option<TrackerRedisInfo>,
  33. pub max_claims_hard: Option<usize>,
  34. pub max_claims_soft: Option<usize>,
  35. pub offload: Option<TrackerOffloadInfo>,
  36. }
  37. pub type TrackerMap = BTreeMap<String, TrackerInfo>;