From eba19a2da3cd8495b223897074ef26c6b6d5edcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Hornick=C3=BD?= Date: Sun, 10 Nov 2019 18:51:19 +0100 Subject: [PATCH] Migrate actix-rt to std::future (#47) --- actix-rt/src/arbiter.rs | 4 ++-- actix-rt/src/runtime.rs | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/actix-rt/src/arbiter.rs b/actix-rt/src/arbiter.rs index dc3d0fdc..cfbbf418 100644 --- a/actix-rt/src/arbiter.rs +++ b/actix-rt/src/arbiter.rs @@ -284,7 +284,7 @@ impl Future for ArbiterController { fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { loop { - match unsafe { self.as_mut().map_unchecked_mut(|p| &mut p.rx) }.poll_next(cx) { + match Pin::new(&mut self.rx).poll_next(cx) { Poll::Ready(None) => { return Poll::Ready(()) }, @@ -341,7 +341,7 @@ impl Future for SystemArbiter { fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { loop { - match unsafe { self.as_mut().map_unchecked_mut(|p| &mut p.commands) }.poll_next(cx) { + match Pin::new(&mut self.commands).poll_next(cx) { Poll::Ready(None) => return Poll::Ready(()), Poll::Ready(Some(cmd)) => match cmd { SystemCommand::Exit(code) => { diff --git a/actix-rt/src/runtime.rs b/actix-rt/src/runtime.rs index a68dd858..1a4e707d 100644 --- a/actix-rt/src/runtime.rs +++ b/actix-rt/src/runtime.rs @@ -149,11 +149,12 @@ impl Runtime { // WARN: We do not enter the executor here, since in tokio 0.2 the executor is entered // automatically inside its `block_on` and `run` methods - let _reactor_guard = tokio_net::driver::set_default(reactor_handle); - let _timer_guard = tokio_timer::set_default(timer_handle); - - tokio_timer::clock::with_default(clock , || { - f(executor) + tokio_executor::with_default(&mut current_thread::TaskExecutor::current(),|| { + tokio_timer::clock::with_default(clock, || { + let _reactor_guard = tokio_net::driver::set_default(reactor_handle); + let _timer_guard = tokio_timer::set_default(timer_handle); + f(executor) + }) }) } }