Add ServerWorker::restart_service method
@@ -262,6 +262,13 @@ impl ServerWorker {
WorkerHandle::new(idx, tx1, tx2, avail)
}
+ fn restart_service(&mut self, token: Token, idx: usize) {
+ let factory = &self.factories[idx];
+ trace!("Service {:?} failed, restarting", factory.name(token));
+ self.services[token.0].status = WorkerServiceStatus::Restarting;
+ self.state = WorkerState::Restarting(idx, token, factory.create());
+ }
+
fn shutdown(&mut self, force: bool) {
self.services
.iter_mut()
@@ -376,13 +383,7 @@ impl Future for ServerWorker {
}
Ok(false) => Poll::Pending,
Err((token, idx)) => {
- trace!(
- "Service {:?} failed, restarting",
- self.factories[idx].name(token)
- );
- self.services[token.0].status = WorkerServiceStatus::Restarting;
- self.state =
- WorkerState::Restarting(idx, token, self.factories[idx].create());
+ self.restart_service(token, idx);
self.poll(cx)
}
},
@@ -437,7 +438,7 @@ impl Future for ServerWorker {
// actively poll stream and handle worker command
WorkerState::Available => loop {
match self.check_readiness(cx) {
- Ok(true) => (),
+ Ok(true) => {}
Ok(false) => {
trace!("Worker is unavailable");
self.availability.set(false);
@@ -445,14 +446,8 @@ impl Future for ServerWorker {
return self.poll(cx);
}
Err((token, idx)) => {
- trace!(
- "Service {:?} failed, restarting",
- self.factories[idx].name(token)
- );
+ self.restart_service(token, idx);
self.availability.set(false);
- self.services[token.0].status = WorkerServiceStatus::Restarting;
- self.state =
- WorkerState::Restarting(idx, token, self.factories[idx].create());
return self.poll(cx);
}
}
