cdrs_temp/load_balancing/
mod.rs

1mod random;
2mod round_robin;
3mod round_robin_sync;
4mod single_node;
5
6pub use crate::load_balancing::random::Random;
7pub use crate::load_balancing::round_robin::RoundRobin;
8pub use crate::load_balancing::round_robin_sync::RoundRobinSync;
9pub use crate::load_balancing::single_node::SingleNode;
10
11pub trait LoadBalancingStrategy<N>: Sized {
12    fn init(&mut self, cluster: Vec<N>);
13    fn next(&self) -> Option<&N>;
14    fn remove_node<F>(&mut self, _filter: F)
15    where
16        F: FnMut(&N) -> bool,
17    {
18        // default implementation does nothing
19    }
20}