hydro2_async_scheduler/
async_scheduler.rs

1// ---------------- [ File: src/async_scheduler.rs ]
2crate::ix!();
3
4#[derive(Getters,Builder,Debug, Clone)]
5#[getset(get="pub")]
6#[builder(setter(into))]
7pub struct AsyncScheduler {
8    config: AsyncSchedulerConfig,
9}
10
11impl AsyncScheduler {
12
13    /// Helper that builds an `AsyncScheduler` with provided config.
14    pub fn with_config(cfg: AsyncSchedulerConfig) -> AsyncScheduler {
15        AsyncSchedulerBuilder::default()
16            .config(cfg)
17            .build()
18            .unwrap() // building a struct: we assume it never fails in normal usage
19    }
20
21    /// Test-only constructor that lets us pick a BatchingStrategy quickly.
22    pub fn new_test(strategy: BatchingStrategy) -> Result<Self, NetworkError> {
23        // You can define a config with default or typical test settings
24        let config_result = AsyncSchedulerConfigBuilder::default()
25            .batching_strategy(strategy)
26            .max_parallelism(2_usize)      // or any small number
27            .enable_streaming(false)
28            .build();
29
30        // Avoid .unwrap(), return an error if config fails to build
31        let config = match config_result {
32            Ok(cfg) => cfg,
33            Err(_builder_err) => {
34                return Err(NetworkError::AsyncSchedulerConfigBuilderFailure);
35            }
36        };
37
38        let scheduler = AsyncScheduler { config };
39        Ok(scheduler)
40    }
41}