use actix::Message as ActixMessage;
use actix::Recipient;
use crate::websocket::devstreams::ConnectId;
use crate::websocket::devstreams::OutputMessage;
use crate::websocket::devstreams::OutputMessageType;
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Connect {
pub addr: Recipient<OutputMessage>,
pub id: ConnectId,
}
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Disconnect {
pub id: ConnectId,
}
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Broadcast {
pub ty: OutputMessageType,
pub msg: String,
}
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Subscribe {
pub id: ConnectId,
pub channel: SubscribeChannel,
}
#[derive(serde::Serialize, serde::Deserialize, Clone, strum_macros::EnumString)]
#[strum(ascii_case_insensitive)]
pub enum SubscribeChannel {
ServerTime,
Startup,
}
impl std::fmt::Display for SubscribeChannel {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
SubscribeChannel::ServerTime => write!(f, "ServerTime"),
SubscribeChannel::Startup => write!(f, "Startup"),
}
}
}