Launch idle thread for each server

This commit is contained in:
Joscha 2023-08-12 16:27:53 +02:00
parent 4f63b02509
commit 53be0338f2
3 changed files with 107 additions and 182 deletions

View file

@ -1,8 +1,10 @@
mod server;
mod tree;
use reqwest::Client;
use tracing::error;
use crate::config::Config;
use crate::{config::Config, worker::server::Server};
pub struct Worker {
config: &'static Config,
@ -14,11 +16,33 @@ impl Worker {
}
pub async fn run(&self) {
if self.config.worker_servers.is_empty() {
error!("No servers specified in config");
return;
let client = Client::new();
let mut servers = self
.config
.worker_servers
.iter()
.map(|(name, server_config)| {
Server::new(name.clone(), self.config, server_config, client.clone())
})
.collect::<Vec<_>>();
for server in &servers {
tokio::spawn(server.clone().ping_periodically());
}
todo!()
match servers.len() {
0 => error!("No servers specified in config"),
1 => self.single_server_mode(servers.pop().unwrap()).await,
_ => self.many_server_mode(servers).await,
}
}
async fn single_server_mode(&self, server: Server) {
// TODO Implement
}
async fn many_server_mode(&self, servers: Vec<Server>) {
// TODO Implement
}
}