xmpp-rs/src/event.rs

47 lines
1.1 KiB
Rust
Raw Normal View History

use minidom::Element;
2017-07-12 23:47:05 +00:00
2018-08-02 17:58:19 +00:00
/// High-level event on the Stream implemented by Client and Component
2017-07-12 23:47:05 +00:00
#[derive(Debug)]
pub enum Event {
2018-08-02 17:58:19 +00:00
/// Stream is connected and initialized
2017-07-12 23:47:05 +00:00
Online,
2018-08-02 17:58:19 +00:00
/// Stream end
2017-07-12 23:47:05 +00:00
Disconnected,
2018-08-02 17:58:19 +00:00
/// Received stanza/nonza
Stanza(Element),
2017-07-12 23:47:05 +00:00
}
impl Event {
2018-08-02 17:58:19 +00:00
/// `Online` event?
2017-07-12 23:47:05 +00:00
pub fn is_online(&self) -> bool {
2017-07-20 22:19:08 +00:00
match *self {
Event::Online => true,
2017-07-12 23:47:05 +00:00
_ => false,
}
}
2018-08-02 17:58:19 +00:00
/// `Stanza` event?
2017-07-12 23:47:05 +00:00
pub fn is_stanza(&self, name: &str) -> bool {
2017-07-20 22:19:08 +00:00
match *self {
Event::Stanza(ref stanza) => stanza.name() == name,
2017-07-12 23:47:05 +00:00
_ => false,
}
}
2018-08-02 17:58:19 +00:00
/// If this is a `Stanza` event, get its data
pub fn as_stanza(&self) -> Option<&Element> {
2017-07-20 22:19:08 +00:00
match *self {
Event::Stanza(ref stanza) => Some(stanza),
2017-07-12 23:47:05 +00:00
_ => None,
}
}
2018-08-02 17:58:19 +00:00
/// If this is a `Stanza` event, unwrap into its data
pub fn into_stanza(self) -> Option<Element> {
match self {
Event::Stanza(stanza) => Some(stanza),
_ => None,
}
}
2017-07-12 23:47:05 +00:00
}