use blastmud_interfaces::*; use crate::db; use MessageFromListener::*; use uuid::Uuid; use crate::DResult; 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(()) }