blastmud/blastmud_game/src/message_handler.rs
Condorra 2beaf0d2af Slow down when urges are high.
Also fix a few issues with concurrency errors from the DB.
2023-09-14 22:52:24 +10:00

46 lines
1.2 KiB
Rust

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(())
}