This commit is contained in:
JOLIMAITRE Matthieu 2022-08-22 01:59:56 +02:00
commit 62788c1b26
23 changed files with 1532 additions and 0 deletions

42
harsh-server/src/main.rs Normal file
View file

@ -0,0 +1,42 @@
use telecomande::{Executor, SimpleExecutor};
use tokio::net::TcpListener;
#[tokio::main]
async fn main() {
println!("starting server ...");
let client_handler = SimpleExecutor::new(SessionProc::default()).spawn();
let storage = SimpleExecutor::new(StorageProc::new("./db")).spawn();
let gateway =
SimpleExecutor::new(GatewayProc::new(client_handler.remote(), storage.remote())).spawn();
println!("spawned gateway");
let listener = TcpListener::bind("localhost:8080").await.unwrap();
println!("listening on 'localhost:8080' ...");
let client_handler = client_handler.remote();
loop {
let (stream, address) = listener.accept().await.unwrap();
println!("new connection from '{address:?}'");
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};
pub use storage::{StorageCmd, StorageProc};
mod storage;