use std::time::Duration;
use iroh_blobs::downloader::{ConcurrencyLimits, RetryConfig};
#[derive(Clone, Debug)]
pub struct Config {
pub max_concurrent_requests: usize,
pub max_concurrent_requests_per_node: usize,
pub max_open_connections: usize,
pub max_concurrent_dials_per_hash: usize,
pub max_retries_per_node: u32,
pub initial_retry_delay: Duration,
}
impl Default for Config {
fn default() -> Self {
let concurrency_limits = ConcurrencyLimits::default();
let retry_config = RetryConfig::default();
Self {
max_concurrent_requests: concurrency_limits.max_concurrent_requests,
max_concurrent_requests_per_node: concurrency_limits.max_concurrent_requests_per_node,
max_open_connections: concurrency_limits.max_open_connections,
max_concurrent_dials_per_hash: concurrency_limits.max_concurrent_dials_per_hash,
max_retries_per_node: retry_config.max_retries_per_node,
initial_retry_delay: retry_config.initial_retry_delay,
}
}
}
impl From<Config> for ConcurrencyLimits {
fn from(val: Config) -> Self {
ConcurrencyLimits {
max_concurrent_requests: val.max_concurrent_requests,
max_concurrent_requests_per_node: val.max_concurrent_requests_per_node,
max_open_connections: val.max_open_connections,
max_concurrent_dials_per_hash: val.max_concurrent_dials_per_hash,
}
}
}
impl From<Config> for RetryConfig {
fn from(val: Config) -> Self {
RetryConfig {
max_retries_per_node: val.max_retries_per_node,
initial_retry_delay: val.initial_retry_delay,
}
}
}