use env_logger::Env;
use std::io::Write;
use std::sync::Arc;
use std::time::Duration;
use async_std::stream::interval;
use libp2p::futures::future::join_all;
use libp2p::futures::StreamExt;
use rand::Rng;
use godrays::Godrays;
fn main() {
let env = Env::default().filter_or("GODRAYS_LOG", "info");
env_logger::Builder::from_env(env)
.format(|buf, record| {
writeln!(buf, "[{}] [{}] {}", record.level(), "GRAYS", record.args())
})
.format_timestamp_millis()
.init();
let grs = Arc::new(Godrays::new().unwrap());
let grs1 = grs.clone();
let grs2 = grs.clone();
let t2 = async_std::task::spawn_local(async move {
grs2.launch().await;
});
let t3 = async_std::task::spawn(async move {
let mut i = interval(Duration::from_secs(2));
i.next().await;
loop {
i.next().await;
println!("DISCOVERED: {:?}", grs.get_discovered_ips());
}
});
async_std::task::block_on(join_all(vec![t2, t3]));
}