mod cache;
mod in_flight_tracker;
mod node_info;
mod request;
mod scheduler;
mod scoring;
pub use scheduler::RequestsScheduler;
pub use scoring::ScoringWeights;
pub const MAX_IN_FLIGHT_REQUESTS: usize = 100;
pub const MAX_ACCEPTED_LATENCY_MS: f64 = 5000.0;
pub const CACHE_TTL_MS: u64 = 2000;
pub const CACHE_MAX_SIZE: usize = 1000;
pub const MAX_REQUEST_TTL_MS: u64 = 200;
pub const ALPHA_SMOOTHING_FACTOR: f64 = 0.1;
pub const STAGGERED_DELAY_MS: u64 = 150;
#[derive(Debug, Clone)]
pub struct RequestsSchedulerConfig {
pub max_accepted_latency_ms: f64,
pub cache_ttl_ms: u64,
pub cache_max_size: usize,
pub max_request_ttl_ms: u64,
pub alpha: f64,
pub retry_delay_ms: u64,
}
impl Default for RequestsSchedulerConfig {
fn default() -> Self {
Self {
max_accepted_latency_ms: MAX_ACCEPTED_LATENCY_MS,
cache_ttl_ms: CACHE_TTL_MS,
cache_max_size: CACHE_MAX_SIZE,
max_request_ttl_ms: MAX_REQUEST_TTL_MS,
alpha: ALPHA_SMOOTHING_FACTOR,
retry_delay_ms: STAGGERED_DELAY_MS,
}
}
}