allwright-core 0.1.29

Lightweight allwright engine core with shared client and transport APIs.
Documentation
use crate::proto::CommandRetryOptions;

use super::types::RetryConfig;

pub(crate) fn command_retry_options(timeout_ms: Option<u32>) -> Option<CommandRetryOptions> {
    timeout_ms.map(|timeout_ms| CommandRetryOptions {
        timeout_ms: Some(timeout_ms),
        retry_interval_ms: None,
    })
}

pub(crate) fn merge_retry_config(
    base: Option<RetryConfig>,
    override_config: Option<RetryConfig>,
) -> RetryConfig {
    let mut merged = base.unwrap_or_default();
    if let Some(override_config) = override_config {
        if override_config.timeout_ms.is_some() {
            merged.timeout_ms = override_config.timeout_ms;
        }
        if override_config.interval_ms.is_some() {
            merged.interval_ms = override_config.interval_ms;
        }
    }
    merged
}