use crate::db; use crate::DResult; use blastmud_interfaces::*; use uuid::Uuid; use MessageFromListener::*; mod new_session; pub mod user_commands; #[derive(Clone, Debug)] pub struct ListenerSession { pub listener: Uuid, pub session: Uuid, } #[cfg(test)] impl Default for ListenerSession { fn default() -> ListenerSession { use uuid::uuid; ListenerSession { listener: uuid!("6f9c9b61-9228-4427-abd7-c4aef127a862"), session: uuid!("668efb68-79d3-4004-9d6a-1e5757792e1a"), } } } pub async fn handle(listener: Uuid, msg: MessageFromListener, pool: db::DBPool) -> DResult<()> { match msg { ListenerPing { .. } => { pool.record_listener_ping(listener).await?; } SessionConnected { session, source } => { new_session::handle(&ListenerSession { listener, session }, source, &pool).await?; } SessionDisconnected { session } => { pool.end_session(ListenerSession { listener, session }) .await?; } SessionSentLine { session, msg } => { user_commands::handle(&ListenerSession { listener, session }, &msg, &pool).await?; } AcknowledgeMessage => {} } Ok(()) }