harsh/harsh-server/src/main.rs

44 lines
1.3 KiB
Rust

use telecomande::{Executor, SimpleExecutor};
use tokio::net::TcpListener;
const ADDRESS: &'static str = "localhost:42069";
const DB_PATH: &'static str = "./db.test";
#[tokio::main]
async fn main() {
println!("[main/info] starting server ...");
let sessions = SimpleExecutor::new(SessionProc::default()).spawn();
println!("[main/info] spawned sessions");
let storage = SimpleExecutor::new(StorageProc::new(DB_PATH)).spawn();
println!("[main/info] spawned storage");
let gateway =
SimpleExecutor::new(GatewayProc::new(sessions.remote(), storage.remote())).spawn();
println!("[main/info] spawned gateway");
let listener = TcpListener::bind(ADDRESS).await.unwrap();
println!("[main/info] listening on '{ADDRESS}' ...");
let client_handler = sessions.remote();
loop {
let (stream, address) = listener.accept().await.unwrap();
client_handler
.send(sessions::SessionCmd::AddSession(
stream,
address,
gateway.remote(),
))
.unwrap();
}
}
mod utils;
pub use utils::{Addr, Id};
mod gateway;
pub use gateway::{GatewayCmd, GatewayProc};
mod sessions;
pub use sessions::{SessionCmd, SessionProc};
mod storage;
pub use storage::{StorageCmd, StorageProc};