async_pub_sub 0.2.1

A library aiming at making async pub-sub easier in Rust
Documentation
mod cache;
mod data_consumer;
mod data_producer;
mod persistency;
mod timer;

use async_pub_sub::Result;
use async_pub_sub_macros::routes;
use cache::CacheService;
use data_consumer::DataConsumerService;
use data_producer::DataProducerService;
use persistency::PersistencyService;
use simplelog::Config;
use timer::{CacheTimerNotification, TimerService};

#[tokio::main]
async fn main() -> Result<()> {
    simplelog::TermLogger::init(
        log::LevelFilter::Debug,
        Config::default(),
        simplelog::TerminalMode::Stdout,
        simplelog::ColorChoice::Auto,
    )?;

    log::info!("Starting Main");
    let mut timer_service = TimerService::new();
    let mut cache_service = CacheService::new();
    let mut persistency_service = PersistencyService::new();
    let mut data_producer_service = DataProducerService::new();
    let mut data_consumer_service = DataConsumerService::new();

    routes!(
        data_consumer_service -> cache_service,
        data_producer_service -> cache_service,
        timer_service -> cache_service: CacheTimerNotification,
        cache_service -> persistency_service,
        timer_service -> data_consumer_service,
        timer_service -> data_producer_service,
    )?;

    tokio::join!(
        cache_service.run(),
        data_consumer_service.run(),
        data_producer_service.run(),
        persistency_service.run(),
        timer_service.run(),
    );

    Ok(())
}