use crate::core::{event_engine::Event, PubNubError};
#[derive(Debug)]
pub(crate) enum PresenceEvent {
Joined {
heartbeat_interval: u64,
channels: Option<Vec<String>>,
channel_groups: Option<Vec<String>>,
},
Left {
suppress_leave_events: bool,
channels: Option<Vec<String>>,
channel_groups: Option<Vec<String>>,
},
LeftAll {
suppress_leave_events: bool,
},
HeartbeatSuccess,
HeartbeatFailure { reason: PubNubError },
Reconnect,
Disconnect,
TimesUp,
}
impl Event for PresenceEvent {
fn id(&self) -> &str {
match self {
Self::Joined { .. } => "JOINED",
Self::Left { .. } => "LEFT",
Self::LeftAll { .. } => "LEFT_ALL",
Self::HeartbeatSuccess => "HEARTBEAT_SUCCESS",
Self::HeartbeatFailure { .. } => "HEARTBEAT_FAILURE",
Self::Reconnect => "RECONNECT",
Self::Disconnect => "DISCONNECT",
Self::TimesUp => "TIMES_UP",
}
}
}