use serde::{Deserialize, Serialize};
#[cfg(feature = "observers")]
const fn default_observers_enabled() -> bool {
true
}
#[cfg(feature = "observers")]
const fn default_poll_interval_ms() -> u64 {
100
}
#[cfg(feature = "observers")]
const fn default_batch_size() -> usize {
100
}
#[cfg(feature = "observers")]
const fn default_channel_capacity() -> usize {
1000
}
#[cfg(feature = "observers")]
const fn default_auto_reload() -> bool {
true
}
#[cfg(feature = "observers")]
const fn default_reload_interval_secs() -> u64 {
60
}
#[cfg(feature = "observers")]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default)]
pub struct ObserverPoolConfig {
#[serde(default = "default_observer_pool_min")]
pub min_connections: u32,
#[serde(default = "default_observer_pool_max")]
pub max_connections: u32,
#[serde(default = "default_observer_acquire_timeout")]
pub acquire_timeout_secs: u64,
}
#[cfg(feature = "observers")]
const fn default_observer_pool_min() -> u32 {
2
}
#[cfg(feature = "observers")]
const fn default_observer_pool_max() -> u32 {
5
}
#[cfg(feature = "observers")]
const fn default_observer_acquire_timeout() -> u64 {
10
}
#[cfg(feature = "observers")]
impl Default for ObserverPoolConfig {
fn default() -> Self {
Self {
min_connections: default_observer_pool_min(),
max_connections: default_observer_pool_max(),
acquire_timeout_secs: default_observer_acquire_timeout(),
}
}
}
#[cfg(feature = "observers")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ObserverConfig {
#[serde(default = "default_observers_enabled")]
pub enabled: bool,
#[serde(default = "default_poll_interval_ms")]
pub poll_interval_ms: u64,
#[serde(default = "default_batch_size")]
pub batch_size: usize,
#[serde(default = "default_channel_capacity")]
pub channel_capacity: usize,
#[serde(default = "default_auto_reload")]
pub auto_reload: bool,
#[serde(default = "default_reload_interval_secs")]
pub reload_interval_secs: u64,
#[serde(default)]
pub pool: ObserverPoolConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdmissionConfig {
#[serde(default = "default_admission_max_concurrent")]
pub max_concurrent: usize,
#[serde(default = "default_admission_max_queue_depth")]
pub max_queue_depth: u64,
}
pub(crate) const fn default_admission_max_concurrent() -> usize {
500
}
pub(crate) const fn default_admission_max_queue_depth() -> u64 {
1000
}