use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize)]
pub struct PingRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub req_id: Option<u64>,
}
impl PingRequest {
pub fn new() -> Self {
Self { req_id: None }
}
pub fn with_req_id(req_id: u64) -> Self {
Self {
req_id: Some(req_id),
}
}
}
impl Default for PingRequest {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, Clone, Deserialize)]
pub struct PongResponse {
#[serde(default)]
pub req_id: Option<u64>,
#[serde(default)]
pub time_in: Option<String>,
#[serde(default)]
pub time_out: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Heartbeat {
pub channel: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct SystemStatusMessage {
pub channel: String,
pub data: Vec<SystemStatusData>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct SystemStatusData {
#[serde(default)]
pub api_version: Option<String>,
#[serde(default)]
pub connection_id: Option<u64>,
pub system: String,
#[serde(default)]
pub version: Option<String>,
}
impl SystemStatusData {
pub fn is_online(&self) -> bool {
self.system == "online"
}
pub fn is_maintenance(&self) -> bool {
self.system == "maintenance"
}
}