use std::collections::HashMap;
use std::time::Duration;
pub use schema_core::FailurePolicy;
#[derive(Debug, Clone, Copy)]
pub struct BatchPolicy {
pub max_changes: usize,
pub max_delay: Duration,
}
impl Default for BatchPolicy {
fn default() -> Self {
Self {
max_changes: 256,
max_delay: Duration::from_millis(50),
}
}
}
#[derive(Debug, Clone, Default)]
pub struct FailurePolicies {
default: FailurePolicy,
overrides: HashMap<String, FailurePolicy>,
}
impl FailurePolicies {
pub fn new(default: FailurePolicy) -> Self {
Self {
default,
overrides: HashMap::new(),
}
}
pub fn with_override(mut self, index: impl Into<String>, policy: FailurePolicy) -> Self {
self.overrides.insert(index.into(), policy);
self
}
pub fn resolve(&self, index: &str) -> FailurePolicy {
self.overrides.get(index).copied().unwrap_or(self.default)
}
}