use crate::ack::AckStatus;
use crate::message::command::Reply;
use crate::message::datagram::Datagram;
use crate::message::event::Event;
use crate::message::snapshot::Snapshot;
use crate::message::state::State;
use crate::message::stream::StreamSegment;
#[derive(Debug, Clone)]
pub enum ClientEvent {
Connected {
session_id: String,
epoch: u32,
},
Disconnected {
code: u16,
reason: String,
},
EventReceived {
topic: String,
event: Event,
},
ReplyReceived {
reply: Reply,
},
StateReceived {
topic: String,
state: State,
},
DatagramReceived {
topic: String,
datagram: Datagram,
},
StreamReceived {
topic: String,
segment: StreamSegment,
},
SnapshotReceived {
topic: String,
snapshot: Snapshot,
},
System {
event_name: String,
payload: serde_json::Value,
},
AckReceived {
message_id: String,
status: AckStatus,
},
Pong {
timestamp: i64,
},
Error(String),
Reconnecting {
attempt: u32,
},
}