eureka_mmanager/download/chapter/task/messages/
sub.rs1use std::ops::Deref;
2
3use actix::prelude::*;
4
5use crate::{
6 download::{
7 chapter::task::{ChapterDownloadTask as Task, ChapterDownloadTaskState as State},
8 messages::SubcribeMessage,
9 traits::task::Subscribe,
10 },
11 recipients::MaybeWeakRecipient,
12};
13
14impl Handler<SubcribeMessage<State>> for Task {
15 type Result = <SubcribeMessage<State> as Message>::Result;
16 fn handle(&mut self, _msg: SubcribeMessage<State>, _ctx: &mut Self::Context) -> Self::Result {
17 self.subscribe(_msg.0)
18 }
19}
20
21impl Subscribe for Task {
22 fn subscribe(
23 &mut self,
24 subscriber: MaybeWeakRecipient<
25 crate::download::messages::TaskSubscriberMessages<Self::State>,
26 >,
27 ) {
28 subscriber.do_send(crate::download::messages::TaskSubscriberMessages::ID(
29 self.id,
30 ));
31 subscriber.do_send(crate::download::messages::TaskSubscriberMessages::State(
32 self.state.read().deref().clone(),
33 ));
34 self.subscribers.push_recipient(subscriber);
35 }
36}