camel-api 0.5.7

Core traits and interfaces for rust-camel
Documentation
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub enum LoadBalanceStrategy {
    #[default]
    RoundRobin,
    Random,
    Weighted(Vec<(String, u32)>),
    Failover,
}

#[derive(Debug, Clone)]
pub struct LoadBalancerConfig {
    pub strategy: LoadBalanceStrategy,
    pub parallel: bool,
}

impl LoadBalancerConfig {
    pub fn round_robin() -> Self {
        Self {
            strategy: LoadBalanceStrategy::RoundRobin,
            parallel: false,
        }
    }

    pub fn random() -> Self {
        Self {
            strategy: LoadBalanceStrategy::Random,
            parallel: false,
        }
    }

    pub fn weighted(weights: Vec<(String, u32)>) -> Self {
        Self {
            strategy: LoadBalanceStrategy::Weighted(weights),
            parallel: false,
        }
    }

    pub fn failover() -> Self {
        Self {
            strategy: LoadBalanceStrategy::Failover,
            parallel: false,
        }
    }

    pub fn parallel(mut self, p: bool) -> Self {
        self.parallel = p;
        self
    }
}