#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
pub enum ConnectionState {
Connecting,
Connected,
TimingOut,
Disconnecting,
Disconnected,
Unidentified,
Identified,
Offline,
}
impl ConnectionState {
pub fn is_reliable(&self) -> bool {
match self {
Self::Disconnected | Self::TimingOut | Self::Offline => false,
_ => true,
}
}
pub fn is_available(&self) -> bool {
match self {
Self::Connected | Self::Connecting | Self::Unidentified | Self::Disconnecting => true,
_ => false,
}
}
pub fn is_connected(&self) -> bool {
match self {
Self::Connected | Self::Connecting => true,
_ => false,
}
}
}
impl std::fmt::Display for ConnectionState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Connecting => write!(f, "Connecting"),
Self::Connected => write!(f, "Connected"),
Self::TimingOut => write!(f, "TimingOut"),
Self::Disconnecting => write!(f, "Disconnecting"),
Self::Disconnected => write!(f, "Disconnected"),
Self::Unidentified => write!(f, "Unidentified"),
Self::Identified => write!(f, "Identified"),
Self::Offline => write!(f, "Offline"),
}
}
}