Radish alpha
r
Radicle CI broker
Radicle
Git (anonymous pull)
Log in to clone via SSH
refactor: use a type to capture non-zero count of concurrent adapters
Lars Wirzenius committed 1 year ago
commit 1f8978186a41cb5161345bd9b08d2d11c0db13a3
parent 06449445ec58b962136649448165071236f0c821
1 file changed +17 -5
modified src/config.rs
@@ -19,6 +19,20 @@ const DEFAULT_MAX_RUN_TIME: Duration = Duration::from_secs(3600);
const DEFAULT_QUEUE_LEN_INTERVAL: Duration = Duration::from_secs(3600);
const DEFAULT_STATUS_PAGE_UPDATE_INTERVAL: u64 = 10;

+
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
+
struct NonzeroCount {
+
    count: Option<usize>,
+
}
+

+
impl NonzeroCount {
+
    fn count(&self) -> usize {
+
        match self.count {
+
            None | Some(1) => 1,
+
            Some(n) => n,
+
        }
+
    }
+
}
+

#[derive(Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Config {
@@ -38,7 +52,8 @@ pub struct Config {
    #[serde(default = "default_queue_len_interval")]
    queue_len_interval: Duration,

-
    concurrent_adapters: Option<usize>,
+
    #[serde(default)]
+
    concurrent_adapters: NonzeroCount,
}

fn default_max_run_time() -> Duration {
@@ -61,10 +76,7 @@ impl Config {
    }

    pub fn concurrent_adapters(&self) -> usize {
-
        match &self.concurrent_adapters {
-
            None | Some(0) => 1,
-
            Some(n) => *n,
-
        }
+
        self.concurrent_adapters.count()
    }

    pub fn to_adapters(&self) -> Result<Adapters, AdapterError> {