netscli_core/ops/
config.rs1use crate::{
2 DEFAULT_CONCURRENCY, DEFAULT_DNS_TIMEOUT_MS, DEFAULT_PING_TIMEOUT_MS, DEFAULT_SCAN_TIMEOUT_MS,
3};
4
5#[derive(Debug, Clone)]
6pub struct OpsConfig {
7 pub concurrency: usize,
8 pub scan_timeout_ms: u64,
9 pub ping_timeout_ms: u64,
10 pub dns_timeout_ms: u64,
11}
12
13impl Default for OpsConfig {
14 fn default() -> Self {
15 Self {
16 concurrency: DEFAULT_CONCURRENCY,
17 scan_timeout_ms: DEFAULT_SCAN_TIMEOUT_MS,
18 ping_timeout_ms: DEFAULT_PING_TIMEOUT_MS,
19 dns_timeout_ms: DEFAULT_DNS_TIMEOUT_MS,
20 }
21 }
22}
23
24#[derive(Debug, Clone, Default)]
26pub struct Ops {
27 pub(super) cfg: OpsConfig,
28}
29
30pub const MAX_CONCURRENCY: usize = 1024;
36
37impl Ops {
38 pub fn new(cfg: OpsConfig) -> Self {
39 let mut cfg = cfg;
40 cfg.concurrency = cfg.concurrency.clamp(1, MAX_CONCURRENCY);
44 cfg.scan_timeout_ms = cfg.scan_timeout_ms.max(1);
45 cfg.ping_timeout_ms = cfg.ping_timeout_ms.max(1);
46 cfg.dns_timeout_ms = cfg.dns_timeout_ms.max(1);
47 Self { cfg }
48 }
49
50 pub fn config(&self) -> &OpsConfig {
51 &self.cfg
52 }
53}