eureka_mmanager/download/chapter/task/messages/
cancel.rs1use actix::{AsyncContext, Handler};
2
3use crate::download::{
4 chapter::task::{ChapterDownloadTask as Task, ChapterDownloadTaskState as State},
5 messages::CancelTaskMessage,
6 traits::task::Cancelable,
7};
8
9impl Handler<CancelTaskMessage> for Task {
10 type Result = ();
11 fn handle(&mut self, _msg: CancelTaskMessage, ctx: &mut Self::Context) -> Self::Result {
12 self.cancel(ctx);
13 }
14}
15
16impl Cancelable for Task {
17 fn cancel(&mut self, ctx: &mut Self::Context) {
18 if let Some(handle) = self.handle.take() {
19 ctx.cancel_future(handle);
20 }
21 *self.state.write() = State::Canceled;
22 self.sync_state_subscribers();
23 }
24}