blastmud/blastmud_game/src/message_handler.rs

32 lines
1019 B
Rust
Raw Normal View History

use blastmud_interfaces::*;
use crate::db;
2022-12-16 20:48:24 +11:00
use MessageFromListener::*;
use uuid::Uuid;
use crate::DResult;
2022-12-24 01:34:01 +11:00
use ansi_macro::ansi;
2022-12-23 23:31:49 +11:00
#[derive(Clone,Debug)]
pub struct ListenerSession {
pub listener: Uuid,
pub session: Uuid
}
pub async fn handle(listener: Uuid, msg: MessageFromListener, pool: db::DBPool)
-> DResult<()> {
2022-12-16 20:48:24 +11:00
match msg {
ListenerPing { .. } => { pool.record_listener_ping(listener).await?; }
SessionConnected { session, source: _ } => {
2022-12-23 23:31:49 +11:00
pool.start_session(ListenerSession { listener, session }).await?;
}
SessionDisconnected { session } => {
pool.end_session(ListenerSession { listener, session }).await?;
}
2022-12-16 20:48:24 +11:00
SessionSentLine { session, msg } => {
2022-12-23 23:31:49 +11:00
pool.queue_for_session(&ListenerSession { listener, session },
2022-12-24 01:34:01 +11:00
&format!(ansi!("You hear an echo saying: <bggreen><red>{}<reset>\r\n"), msg)).await?;
2022-12-16 20:48:24 +11:00
}
AcknowledgeMessage => {}
}
Ok(())
}