scylla_cql/frame/
server_event_type.rs

1use std::fmt;
2use std::str::FromStr;
3
4use super::frame_errors::CqlEventParseError;
5
6pub enum EventType {
7    TopologyChange,
8    StatusChange,
9    SchemaChange,
10}
11
12impl fmt::Display for EventType {
13    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14        let s = match &self {
15            Self::TopologyChange => "TOPOLOGY_CHANGE",
16            Self::StatusChange => "STATUS_CHANGE",
17            Self::SchemaChange => "SCHEMA_CHANGE",
18        };
19
20        write!(f, "{}", s)
21    }
22}
23
24impl FromStr for EventType {
25    type Err = CqlEventParseError;
26
27    fn from_str(s: &str) -> Result<Self, Self::Err> {
28        match s {
29            "TOPOLOGY_CHANGE" => Ok(Self::TopologyChange),
30            "STATUS_CHANGE" => Ok(Self::StatusChange),
31            "SCHEMA_CHANGE" => Ok(Self::SchemaChange),
32            _ => Err(CqlEventParseError::UnknownEventType(s.to_string())),
33        }
34    }
35}