diff options
author | Wladimir Palant <[email protected]> | 2024-06-28 21:02:29 +0000 |
---|---|---|
committer | Yuchen Wu <[email protected]> | 2024-07-12 20:54:04 +0000 |
commit | bf81bd4d932f2041842301f96cdd976fc9e90c89 (patch) | |
tree | df9c4c2ae037ab5d19c6f346c23ab871d5c70aa3 | |
parent | 9220e6be2d6845e62b1aa553dfbbcc61d5d53492 (diff) | |
download | pingora-bf81bd4d932f2041842301f96cdd976fc9e90c89.tar.gz pingora-bf81bd4d932f2041842301f96cdd976fc9e90c89.zip |
Fixes #311 - Make timeouts Sync
Includes-commit: 3faed99e264cda6ba3986912d06c6e67bf5df13b
Replicated-from: https://github.com/cloudflare/pingora/pull/312
-rw-r--r-- | .bleep | 2 | ||||
-rw-r--r-- | pingora-timeout/Cargo.toml | 1 | ||||
-rw-r--r-- | pingora-timeout/src/fast_timeout.rs | 2 | ||||
-rw-r--r-- | pingora-timeout/src/lib.rs | 7 |
4 files changed, 5 insertions, 7 deletions
@@ -1 +1 @@ -819e3bc852ba912c6fcf02bc9aa4f2c5d6a61d79 +a0543ca77c1d82a93f88fdf93f7a0e8e344f03d3
\ No newline at end of file diff --git a/pingora-timeout/Cargo.toml b/pingora-timeout/Cargo.toml index 92e72e7..1bca525 100644 --- a/pingora-timeout/Cargo.toml +++ b/pingora-timeout/Cargo.toml @@ -24,7 +24,6 @@ tokio = { workspace = true, features = [ "sync", ] } pin-project-lite = "0.2" -futures = "0.3" once_cell = { workspace = true } parking_lot = "0.12" thread_local = "1.0" diff --git a/pingora-timeout/src/fast_timeout.rs b/pingora-timeout/src/fast_timeout.rs index c3b251a..d5de5f4 100644 --- a/pingora-timeout/src/fast_timeout.rs +++ b/pingora-timeout/src/fast_timeout.rs @@ -50,7 +50,7 @@ fn check_clock_thread(tm: &Arc<TimerManager>) { pub struct FastTimeout(Duration); impl ToTimeout for FastTimeout { - fn timeout(&self) -> BoxFuture<'static, ()> { + fn timeout(&self) -> Pin<Box<dyn Future<Output = ()> + Send + Sync>> { Box::pin(TIMER_MANAGER.register_timer(self.0).poll()) } diff --git a/pingora-timeout/src/lib.rs b/pingora-timeout/src/lib.rs index 75b0663..26bb5b9 100644 --- a/pingora-timeout/src/lib.rs +++ b/pingora-timeout/src/lib.rs @@ -39,7 +39,6 @@ pub mod timer; pub use fast_timeout::fast_sleep as sleep; pub use fast_timeout::fast_timeout as timeout; -use futures::future::BoxFuture; use pin_project_lite::pin_project; use std::future::Future; use std::pin::Pin; @@ -50,7 +49,7 @@ use tokio::time::{sleep as tokio_sleep, Duration}; /// /// Users don't need to interact with this trait pub trait ToTimeout { - fn timeout(&self) -> BoxFuture<'static, ()>; + fn timeout(&self) -> Pin<Box<dyn Future<Output = ()> + Send + Sync>>; fn create(d: Duration) -> Self; } @@ -60,7 +59,7 @@ pub trait ToTimeout { pub struct TokioTimeout(Duration); impl ToTimeout for TokioTimeout { - fn timeout(&self) -> BoxFuture<'static, ()> { + fn timeout(&self) -> Pin<Box<dyn Future<Output = ()> + Send + Sync>> { Box::pin(tokio_sleep(self.0)) } @@ -100,7 +99,7 @@ pin_project! { #[pin] value: T, #[pin] - delay: Option<BoxFuture<'static, ()>>, + delay: Option<Pin<Box<dyn Future<Output = ()> + Send + Sync>>>, callback: F, // callback to create the timer } } |