diff --git a/src/grpc/client.rs b/src/grpc/client.rs index d6b7bbc..a86c560 100644 --- a/src/grpc/client.rs +++ b/src/grpc/client.rs @@ -73,19 +73,3 @@ impl ConnManager { Ok(()) } } - -// pub async fn init_connections(ds: Arc, tx: Sender) { -// let mut nodes = load_init_nodes("detee_challenge_nodes"); -// // we rotate online and offline nodes, to constantly check new nodes -// let mut only_online_nodes = true; -// loop { -// let mut set = JoinSet::new(); -// for node in nodes { -// let conn = ConnManager::init(ds.clone(), tx.clone()); -// set.spawn(conn.connect_wrapper(node)); -// } -// while let Some(_) = set.join_next().await {} -// nodes = ds.get_random_nodes(only_online_nodes).await; -// only_online_nodes = !only_online_nodes; -// } -// } diff --git a/src/main.rs b/src/main.rs index 7e914af..df4fe58 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,6 @@ mod datastore; +use crate::grpc::challenge::NodeUpdate; +use tokio::sync::broadcast::Sender; use tokio::task::JoinSet; mod grpc; mod http_server; @@ -7,17 +9,24 @@ use std::fs::File; use std::io::{BufRead, BufReader}; use std::sync::Arc; use tokio::sync::broadcast; +use tokio::time::{sleep, Duration}; + +async fn cycle_keys(ds: Arc, tx: Sender) { + loop { + let _ = tx.send(ds.reset_localhost_keys().await); + sleep(Duration::from_secs(60)).await; + } +} #[tokio::main] async fn main() { let ds: Arc = Arc::new(Store::init()); let (tx, mut _rx) = broadcast::channel(500); - ds.reset_localhost_keys().await; - let mut long_term_tasks = JoinSet::new(); let mut init_tasks = JoinSet::new(); + long_term_tasks.spawn(cycle_keys(ds.clone(), tx.clone())); long_term_tasks.spawn(http_server::init(ds.clone())); long_term_tasks.spawn(grpc::server::MyServer::init(ds.clone(), tx.clone()).start());