From 2c82985d2440c7bf40eabc744ea370169bd9e207 Mon Sep 17 00:00:00 2001 From: Jacob Rothstein Date: Sun, 14 Jun 2020 20:53:09 -0700 Subject: [PATCH] return a result from sse sender in order to allow endpoints to break out of loops --- Cargo.toml | 2 +- examples/sse.rs | 4 ++-- src/sse/mod.rs | 4 ++-- src/sse/sender.rs | 11 ++++++++--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 87e70b812..d701194e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ __internal__bench = [] [dependencies] async-h1 = { version = "2.0.1", optional = true } -async-sse = "3.0.0" +async-sse = "3.0.1" async-std = { version = "1.6.0", features = ["unstable"] } femme = "2.0.1" http-types = "2.2.1" diff --git a/examples/sse.rs b/examples/sse.rs index 9e2dcdb23..2c5483a14 100644 --- a/examples/sse.rs +++ b/examples/sse.rs @@ -4,8 +4,8 @@ use tide::sse; async fn main() -> Result<(), std::io::Error> { let mut app = tide::new(); app.at("/sse").get(sse::endpoint(|_req, sender| async move { - sender.send("fruit", "banana", None).await; - sender.send("fruit", "apple", None).await; + sender.send("fruit", "banana", None).await?; + sender.send("fruit", "apple", None).await?; Ok(()) })); app.listen("localhost:8080").await?; diff --git a/src/sse/mod.rs b/src/sse/mod.rs index 365b4ca45..dc198b19c 100644 --- a/src/sse/mod.rs +++ b/src/sse/mod.rs @@ -18,8 +18,8 @@ //! //! let mut app = tide::new(); //! app.at("/sse").get(sse::endpoint(|_req, sender| async move { -//! sender.send("fruit", "banana", None).await; -//! sender.send("fruit", "apple", None).await; +//! sender.send("fruit", "banana", None).await?; +//! sender.send("fruit", "apple", None).await?; //! Ok(()) //! })); //! app.listen("localhost:8080").await?; diff --git a/src/sse/sender.rs b/src/sse/sender.rs index 27fe0b059..a20afbbf2 100644 --- a/src/sse/sender.rs +++ b/src/sse/sender.rs @@ -12,8 +12,13 @@ impl Sender { /// Send data from the SSE channel. /// - /// Each message constists of a "name" and "data". - pub async fn send(&self, name: &str, data: impl AsRef, id: Option<&str>) { - self.sender.send(name, data.as_ref(), id).await; + /// Each message consists of a "name" and "data". + pub async fn send( + &self, + name: &str, + data: impl AsRef, + id: Option<&str>, + ) -> async_std::io::Result<()> { + self.sender.send(name, data.as_ref(), id).await } }