//! 链路枢纽

mod common;
mod link;
mod starter;

use common::*;
use core::future::pending;
use starter::Starter;
use std::fs;

static PUB_R: Publisher = Publisher::new(false);
static PUB_L: Publisher = Publisher::new(false);

#[tokio::main(flavor = "current_thread")]
async fn main() {
    simple_logger::init().unwrap();

    let links_right = fs::read_to_string("./config/links_right.yaml").unwrap();
    let links_right: Vec<Link> = serde_yaml::from_str(&links_right).unwrap();
    let links_left = fs::read_to_string("./config/links_left.yaml").unwrap();
    let links_left: Vec<Link> = serde_yaml::from_str(&links_left).unwrap();

    let starter_r = Starter::new(&PUB_R, &PUB_L);
    for link in links_right {
        starter_r.start(link).await;
    }

    let starter_l = Starter::new(&PUB_L, &PUB_R);
    for link in links_left {
        starter_l.start(link).await;
    }

    pending::<()>().await;
}