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}