infotainer 0.0.1-alpha.1

building blocks for simple pubsub services
Documentation
use std::fs::create_dir_all;
use std::path::PathBuf;

use actix::prelude::Actor;
use actix_web::{middleware, web, App, HttpServer};

use infotainer::{data_log::DataLogger, pubsub::PubSubService, websocket::websocket_handler};

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
    env_logger::init();
    let data_path = PathBuf::from("/tmp/infotainer-server-example");
    create_dir_all(&data_path)?;
    let data_logger_addr = DataLogger::new(&data_path)
        .expect("Could not initiate DataLogger")
        .start();
    let pubsub_server_addr = PubSubService::new(&data_logger_addr).start();
    HttpServer::new(move || {
        App::new()
            .data(pubsub_server_addr.clone())
            .data(data_logger_addr.clone())
            .wrap(middleware::Logger::default())
            .service(web::resource("/ws/{session_id}").route(web::get().to(websocket_handler)))
    })
    .bind("127.0.0.1:1312")?
    .run()
    .await
}