cueball_static_resolver/
lib.rs1use std::sync::mpsc::Sender;
4
5use cueball::backend::*;
6use cueball::resolver::{BackendAddedMsg, BackendMsg, Resolver};
7
8pub struct StaticIpResolver {
9 backends: Vec<(BackendAddress, BackendPort)>,
10 pool_tx: Option<Sender<BackendMsg>>,
11 started: bool,
12}
13
14impl StaticIpResolver {
15 pub fn new(backends: Vec<(BackendAddress, BackendPort)>) -> Self {
16 StaticIpResolver {
17 backends,
18 pool_tx: None,
19 started: false,
20 }
21 }
22}
23
24impl Resolver for StaticIpResolver {
25 fn run(&mut self, s: Sender<BackendMsg>) {
26 if !self.started {
27 self.backends.iter().for_each(|b| {
28 let backend = Backend::new(&b.0, b.1);
29 let backend_key = srv_key(&backend);
30 let backend_msg = BackendMsg::AddedMsg(BackendAddedMsg {
31 key: backend_key,
32 backend,
33 });
34 s.send(backend_msg).unwrap();
35 });
36 self.pool_tx = Some(s);
37 self.started = true;
38 }
39 }
40}