use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum Event {
#[serde(rename = "#handshake")]
Handshake,
#[serde(rename = "#subscribe")]
Subscribe,
#[serde(rename = "#publish")]
Publish,
#[serde(rename = "#unsubscribe")]
Unsubscribe,
#[serde(rename = "#authenticate")]
Authenticate,
#[serde(rename = "#disconnect")]
Disconnect,
Custom(String),
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct Packet {
#[serde(skip_serializing_if = "Option::is_none")]
pub event: Option<Event>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cid: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rid: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<Value>,
}