Lazily bubbling the XMPP event up to the Disconnected event.

Werner Kroneman created

Change summary

xmpp/examples/hello_bot.rs | 4 ++--
xmpp/src/lib.rs            | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)

Detailed changes

xmpp/examples/hello_bot.rs 🔗

@@ -39,8 +39,8 @@ async fn main() -> Result<(), Option<()>> {
                 Event::Online => {
                     println!("Online.");
                 }
-                Event::Disconnected => {
-                    println!("Disconnected");
+                Event::Disconnected(e) => {
+                    println!("Disconnected because of {}.", e);
                     return Err(None);
                 }
                 Event::ContactAdded(contact) => {

xmpp/src/lib.rs 🔗

@@ -77,7 +77,7 @@ pub type RoomNick = String;
 #[derive(Debug)]
 pub enum Event {
     Online,
-    Disconnected,
+    Disconnected(Error),
     ContactAdded(RosterItem),
     ContactRemoved(RosterItem),
     ContactChanged(RosterItem),
@@ -539,8 +539,8 @@ impl Agent {
                     let _ = self.client.send_stanza(iq).await;
                 }
                 TokioXmppEvent::Online { resumed: true, .. } => {}
-                TokioXmppEvent::Disconnected(_) => {
-                    events.push(Event::Disconnected);
+                TokioXmppEvent::Disconnected(e) => {
+                    events.push(Event::Disconnected(e));
                 }
                 TokioXmppEvent::Stanza(elem) => {
                     if elem.is("iq", "jabber:client") {
@@ -659,7 +659,7 @@ mod tests {
 
         while let Some(events) = agent.wait_for_events().await {
             assert!(match events[0] {
-                Event::Disconnected => true,
+                Event::Disconnected(_) => true,
                 _ => false,
             });
             assert_eq!(events.len(), 1);