use actix::Message;
use num_enum::{IntoPrimitive, TryFromPrimitive};
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(IntoPrimitive, Clone, Eq, PartialEq, TryFromPrimitive)]
#[repr(u8)]
pub enum SocketIOPacketType {
Connect = 0,
Disconnect = 1,
Event = 2,
Ack = 3,
ConnectError = 4,
BinaryEvent = 5,
BinaryAck = 6,
}
#[derive(IntoPrimitive, Clone, Eq, PartialEq, TryFromPrimitive)]
#[repr(u8)]
pub enum EngineIOPacketType {
Open = 0,
Close = 1,
Ping = 2,
Pong = 3,
Message = 4,
Upgrade = 5,
Noop = 6,
}
#[derive(Message, Serialize)]
#[rtype(result = "Result<(), &'static str>")]
#[serde(rename_all = "camelCase")]
pub struct OpenPacket {
pub sid: String,
pub upgrades: Vec<String>,
pub ping_interval: u64,
pub ping_timeout: u64,
pub max_payload: usize,
}
#[derive(Deserialize, Debug, Clone)]
pub struct EventData(pub String, pub Value);
#[derive(Debug, Clone)]
pub enum MessageType {
None,
Connect,
Event(EventData),
}
#[derive(Message, Serialize)]
#[rtype(result = "Result<(), &'static str>")]
pub struct ConnectSuccess<T: Serialize> {
pub data: T,
}