An AdminMessage (server code 66) is how a server tells everyone it is going down, and the client dropped it on the floor. It now arrives in the private-message inbox as a message from the user "server", which is also the name the server's own command replies already come from, so every reader of that inbox shows it without a new API.
31 lines
952 B
Rust
31 lines
952 B
Rust
//! `AdminMessage` (server code 66): an announcement from the server to
|
|
//! everyone, surfaced as a private message from the user "server".
|
|
|
|
use crate::actor::server_actor::{ServerMessage, UserMessage};
|
|
use crate::message::{Message, MessageHandler};
|
|
use std::sync::mpsc::Sender;
|
|
use std::time::{SystemTime, UNIX_EPOCH};
|
|
|
|
pub struct AdminMessageHandler;
|
|
|
|
impl MessageHandler<ServerMessage> for AdminMessageHandler {
|
|
fn get_code(&self) -> u32 {
|
|
66
|
|
}
|
|
|
|
fn handle(&self, message: &mut Message, sender: Sender<ServerMessage>) {
|
|
let now = SystemTime::now()
|
|
.duration_since(UNIX_EPOCH)
|
|
.map_or(0, |since| since.as_secs() as u32);
|
|
let announcement = UserMessage::new(
|
|
0,
|
|
now,
|
|
"server".to_string(),
|
|
message.read_string(),
|
|
false,
|
|
);
|
|
let _ =
|
|
sender.send(ServerMessage::PrivateMessageReceived(announcement));
|
|
}
|
|
}
|