eureka_mmanager/download/messages/
chapter.rs1use std::future::Future;
2
3use crate::{
4 download::{chapter::ChapterDownloadManager as Manager, DownloadManager, GetManager},
5 MailBoxResult,
6};
7use actix::prelude::*;
8use dev::ToEnvelope;
9
10pub struct GetChapterDownloadManagerMessage;
11
12impl Message for GetChapterDownloadManagerMessage {
13 type Result = Addr<Manager>;
14}
15
16impl Handler<GetChapterDownloadManagerMessage> for DownloadManager {
17 type Result = <GetChapterDownloadManagerMessage as Message>::Result;
18 fn handle(
19 &mut self,
20 _msg: GetChapterDownloadManagerMessage,
21 _ctx: &mut Self::Context,
22 ) -> Self::Result {
23 self.chapter.clone()
24 }
25}
26
27impl<A> GetManager<Manager> for Addr<A>
28where
29 A: Actor + Handler<GetChapterDownloadManagerMessage>,
30 <A as Actor>::Context: ToEnvelope<A, GetChapterDownloadManagerMessage>,
31{
32 async fn get(&self) -> Result<Addr<Manager>, MailboxError> {
33 self.send(GetChapterDownloadManagerMessage).await
34 }
35}
36
37pub trait GetChapterDownloadManager: Sync {
38 fn get_chapter_manager(&self) -> impl Future<Output = MailBoxResult<Addr<Manager>>> + Send;
39}
40
41impl<A> GetChapterDownloadManager for A
42where
43 A: GetManager<Manager> + Sync,
44{
45 fn get_chapter_manager(&self) -> impl Future<Output = MailBoxResult<Addr<Manager>>> + Send {
46 self.get()
47 }
48}