Skip to content

Commit fdac52a

Browse files
authored
Refactor Worker::shutdown mehtod (#308)
1 parent 6d66cfb commit fdac52a

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

actix-server/src/worker.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::time::Duration;
88
use actix_rt::time::{sleep, Sleep};
99
use actix_rt::{spawn, Arbiter};
1010
use actix_utils::counter::Counter;
11-
use futures_core::future::LocalBoxFuture;
11+
use futures_core::{future::LocalBoxFuture, ready};
1212
use log::{error, info, trace};
1313
use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender};
1414
use tokio::sync::oneshot;
@@ -263,19 +263,16 @@ impl ServerWorker {
263263
}
264264

265265
fn shutdown(&mut self, force: bool) {
266-
if force {
267-
self.services.iter_mut().for_each(|srv| {
268-
if srv.status == WorkerServiceStatus::Available {
269-
srv.status = WorkerServiceStatus::Stopped;
270-
}
271-
});
272-
} else {
273-
self.services.iter_mut().for_each(move |srv| {
274-
if srv.status == WorkerServiceStatus::Available {
275-
srv.status = WorkerServiceStatus::Stopping;
276-
}
266+
self.services
267+
.iter_mut()
268+
.filter(|srv| srv.status == WorkerServiceStatus::Available)
269+
.for_each(|srv| {
270+
srv.status = if force {
271+
WorkerServiceStatus::Stopped
272+
} else {
273+
WorkerServiceStatus::Stopping
274+
};
277275
});
278-
}
279276
}
280277

281278
fn check_readiness(&mut self, cx: &mut Context<'_>) -> Result<bool, (Token, usize)> {
@@ -466,16 +463,15 @@ impl Future for ServerWorker {
466463
}
467464
}
468465

469-
match Pin::new(&mut self.rx).poll_recv(cx) {
466+
match ready!(Pin::new(&mut self.rx).poll_recv(cx)) {
470467
// handle incoming io stream
471-
Poll::Ready(Some(WorkerCommand(msg))) => {
468+
Some(WorkerCommand(msg)) => {
472469
let guard = self.conns.get();
473470
let _ = self.services[msg.token.0]
474471
.service
475472
.call((Some(guard), msg.io));
476473
}
477-
Poll::Pending => return Poll::Pending,
478-
Poll::Ready(None) => return Poll::Ready(()),
474+
None => return Poll::Ready(()),
479475
};
480476
},
481477
}

0 commit comments

Comments
 (0)