roxy-traits 0.1.0

Core traits for Roxy RPC proxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//! Load balancer traits for backend selection.

use std::sync::Arc;

use crate::backend::Backend;

/// Load balancer trait for selecting backends.
pub trait LoadBalancer: Send + Sync {
    /// Select a single backend.
    fn select(&self, backends: &[Arc<dyn Backend>]) -> Option<Arc<dyn Backend>>;

    /// Order backends by preference for failover.
    fn select_ordered(&self, backends: &[Arc<dyn Backend>]) -> Vec<Arc<dyn Backend>>;
}