use std::net::IpAddr;
use std::sync::Arc;
use net_backend_protocol::{CloseCode, UserId};
use serde_json::Value;
use super::hub::ConnectionId;
use crate::hooks::Event;
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct BeforeWsConnect {
pub connection: Option<ConnectionId>,
pub user_id: UserId,
pub session_id: Option<i64>,
pub ip: Option<IpAddr>,
pub origin: Option<String>,
}
impl Event for BeforeWsConnect {
const NAME: &'static str = "ws.before_connect";
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AfterWsConnect {
pub connection: ConnectionId,
pub user_id: UserId,
pub session_id: Option<i64>,
pub ip: Option<IpAddr>,
}
impl Event for AfterWsConnect {
const NAME: &'static str = "ws.after_connect";
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AfterWsDisconnect {
pub connection: ConnectionId,
pub user_id: UserId,
pub code: Option<CloseCode>,
pub rooms: Vec<Arc<str>>,
}
impl Event for AfterWsDisconnect {
const NAME: &'static str = "ws.after_disconnect";
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct BeforeWsFrame {
pub connection: ConnectionId,
pub user_id: UserId,
pub kind: String,
pub data: Value,
}
impl Event for BeforeWsFrame {
const NAME: &'static str = "ws.before_frame";
}