use crate::tasks::{
error::TaskError,
event::{TaskEvent, TaskStopReason},
state::TaskState,
tokio::executor::TaskExecutor,
};
impl TaskExecutor {
pub(crate) async fn send_error_event_and_stop(&mut self, error: TaskError) {
let time = Self::update_state(&self.shared_context, TaskState::Finished);
let error_event = TaskEvent::Error {
error: error.clone(),
};
let _ = self.shared_context.send_event(error_event).await;
let finish_event = TaskEvent::Stopped {
exit_code: None,
finished_at: time,
reason: TaskStopReason::Error(error.clone()),
#[cfg(unix)]
signal: None,
};
let _ = self.shared_context.send_event(finish_event).await;
self.shared_context
.set_stop_reason(TaskStopReason::Error(error))
.await;
}
}