event.rs

 1use xmpp_parsers::Element;
 2
 3/// High-level event on the Stream implemented by Client and Component
 4#[derive(Debug)]
 5pub enum Event {
 6    /// Stream is connected and initialized
 7    Online,
 8    /// Stream end
 9    Disconnected,
10    /// Received stanza/nonza
11    Stanza(Element),
12}
13
14impl Event {
15    /// `Online` event?
16    pub fn is_online(&self) -> bool {
17        match *self {
18            Event::Online => true,
19            _ => false,
20        }
21    }
22
23    /// `Stanza` event?
24    pub fn is_stanza(&self, name: &str) -> bool {
25        match *self {
26            Event::Stanza(ref stanza) => stanza.name() == name,
27            _ => false,
28        }
29    }
30
31    /// If this is a `Stanza` event, get its data
32    pub fn as_stanza(&self) -> Option<&Element> {
33        match *self {
34            Event::Stanza(ref stanza) => Some(stanza),
35            _ => None,
36        }
37    }
38
39    /// If this is a `Stanza` event, unwrap into its data
40    pub fn into_stanza(self) -> Option<Element> {
41        match self {
42            Event::Stanza(stanza) => Some(stanza),
43            _ => None,
44        }
45    }
46}