1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::actor::{PushJob, QueueActor};
use crate::message::MessageEncodable;
use actix::Addr;

pub struct Producer {
    addr: Addr<QueueActor>,
}

impl Producer {
    pub fn new(addr: Addr<QueueActor>) -> Self {
        Producer { addr }
    }

    pub async fn push_job<J>(&self, job: J)
    where
        J: MessageEncodable,
    {
        let queue = self.addr.clone();
        let message = MessageEncodable::encode_message(&job).unwrap();
        let _res = queue.send(PushJob::create(message)).await.unwrap();
    }
}