async_sse/
event.rs

1use crate::Message;
2
3use std::time::Duration;
4
5/// The kind of SSE event sent.
6#[derive(Debug, Eq, PartialEq)]
7pub enum Event {
8    /// A retry frame, signaling a new retry duration must be used..
9    Retry(Duration),
10    /// A data frame containing a message.
11    Message(Message),
12}
13
14impl Event {
15    /// Create a new message.
16    pub(crate) fn new_msg(name: String, data: Vec<u8>, id: Option<String>) -> Self {
17        Self::Message(Message { name, data, id })
18    }
19
20    /// Create a new retry.
21    pub(crate) fn new_retry(dur: u64) -> Self {
22        Self::Retry(Duration::from_secs_f64(dur as f64))
23    }
24
25    /// Check whether this is a Retry variant.
26    pub fn is_retry(&self) -> bool {
27        match *self {
28            Self::Retry(_) => true,
29            _ => false,
30        }
31    }
32
33    /// Check whether this is a `Message` variant.
34    pub fn is_message(&self) -> bool {
35        match *self {
36            Self::Message(_) => true,
37            _ => false,
38        }
39    }
40}