Skip to content

Commit c61bb90

Browse files
author
rusty
committed
Replace cancellation module with stopper
1 parent 7f021a5 commit c61bb90

File tree

6 files changed

+18
-263
lines changed

6 files changed

+18
-263
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ async-session = { version = "3.0", optional = true }
3838
async-sse = "4.0.1"
3939
async-std = { version = "1.6.5", features = ["unstable"] }
4040
async-trait = "0.1.41"
41-
event-listener = "2.5.1"
4241
femme = { version = "2.1.1", optional = true }
4342
futures-util = "0.3.6"
4443
http-client = { version = "6.1.0", default-features = false }
@@ -49,6 +48,7 @@ pin-project-lite = "0.2.0"
4948
route-recognizer = "0.2.0"
5049
serde = "1.0.117"
5150
serde_json = "1.0.59"
51+
stopper = "0.2.0"
5252

5353
[dev-dependencies]
5454
async-std = { version = "1.6.5", features = ["unstable", "attributes"] }

src/cancellation.rs

Lines changed: 0 additions & 245 deletions
This file was deleted.

src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ mod route;
7676
mod router;
7777
mod server;
7878

79-
pub mod cancellation;
8079
pub mod convert;
8180
pub mod listener;
8281
pub mod log;
@@ -99,6 +98,8 @@ pub use server::Server;
9998

10099
pub use http_types::{self as http, Body, Error, Status, StatusCode};
101100

101+
pub use stopper;
102+
102103
/// Create a new Tide server.
103104
///
104105
/// # Examples

src/listener/tcp_listener.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use super::{is_transient_error, ListenInfo};
22

3-
use crate::cancellation::StopStreamExt;
43
use crate::listener::Listener;
54
use crate::{log, Server};
65

@@ -99,7 +98,7 @@ where
9998
.take()
10099
.expect("`Listener::bind` must be called before `Listener::accept`");
101100

102-
let mut incoming = listener.incoming().stop_on(server.stop_token.clone());
101+
let mut incoming = server.stopper.clone().stop_stream(listener.incoming());
103102

104103
while let Some(stream) = incoming.next().await {
105104
match stream {

src/listener/unix_listener.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use super::{is_transient_error, ListenInfo};
22

3-
use crate::cancellation::StopStreamExt;
43
use crate::listener::Listener;
54
use crate::{log, Server};
65

@@ -97,7 +96,7 @@ where
9796
.take()
9897
.expect("`Listener::bind` must be called before `Listener::accept`");
9998

100-
let mut incoming = listener.incoming().stop_on(server.stop_token.clone());
99+
let mut incoming = server.stopper.clone().stop_stream(listener.incoming());
101100

102101
while let Some(stream) = incoming.next().await {
103102
match stream {

src/server.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
use async_std::io;
44
use async_std::sync::Arc;
55

6-
use crate::cancellation::StopToken;
6+
use stopper::Stopper;
7+
78
#[cfg(feature = "cookies")]
89
use crate::cookies;
910
use crate::listener::{Listener, ToListener};
@@ -39,7 +40,7 @@ pub struct Server<State> {
3940
/// We don't use a Mutex around the Vec here because adding a middleware during execution should be an error.
4041
#[allow(clippy::rc_buffer)]
4142
middleware: Arc<Vec<Arc<dyn Middleware<State>>>>,
42-
pub(crate) stop_token: StopToken,
43+
pub(crate) stopper: Stopper,
4344
}
4445

4546
impl Server<()> {
@@ -115,7 +116,7 @@ where
115116
Arc::new(log::LogMiddleware::new()),
116117
]),
117118
state,
118-
stop_token: StopToken::never(),
119+
stopper: Stopper::new(),
119120
}
120121
}
121122

@@ -289,7 +290,7 @@ where
289290
router,
290291
state,
291292
middleware,
292-
stop_token: _,
293+
stopper: _,
293294
} = self.clone();
294295

295296
let method = req.method().to_owned();
@@ -322,26 +323,26 @@ where
322323
&self.state
323324
}
324325

325-
/// Stops the server when given `stop_token` completes.
326+
/// Stops the server when given `stopper` stops.
326327
///
327328
/// # Example
328329
///
329330
/// ```rust
330-
/// use tide::cancellation::StopSource;
331+
/// use tide::stopper::Stopper;
331332
///
332333
/// let mut app = tide::new();
333334
///
334-
/// let stop_source = StopSource::new();
335+
/// let stopper = Stopper::new();
335336
///
336-
/// app.stop_on(stop_source.token());
337+
/// app.with_stopper(stopper.clone());
337338
///
338339
/// // Runs server...
339340
///
340341
/// // When something happens
341-
/// drop(stop_source);
342+
/// stopper.stop();
342343
/// ```
343-
pub fn stop_on(&mut self, stop_token: StopToken) -> &mut Self {
344-
self.stop_token = stop_token;
344+
pub fn with_stopper(&mut self, stopper: Stopper) -> &mut Self {
345+
self.stopper = stopper;
345346
self
346347
}
347348
}
@@ -358,7 +359,7 @@ impl<State: Clone> Clone for Server<State> {
358359
router: self.router.clone(),
359360
state: self.state.clone(),
360361
middleware: self.middleware.clone(),
361-
stop_token: self.stop_token.clone(),
362+
stopper: self.stopper.clone(),
362363
}
363364
}
364365
}

0 commit comments

Comments
 (0)