godrays 0.1.0

Peer Discovery library for Cluster Formation
Documentation
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| {
            // Output the log to stdout as usual
            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]));
}