background-jobs/jobs-actix/src/pinger.rs

28 lines
591 B
Rust
Raw Normal View History

2019-05-27 17:29:11 +00:00
use actix::{Actor, Addr, AsyncContext, Context};
2018-12-16 18:43:44 +00:00
use std::time::Duration;
2019-05-27 17:29:11 +00:00
use crate::{CheckDb, Server};
2018-12-16 18:43:44 +00:00
2019-05-27 17:29:11 +00:00
pub struct Pinger {
server: Addr<Server>,
2019-05-28 00:01:21 +00:00
threads: usize,
2018-12-16 18:43:44 +00:00
}
2019-05-27 17:29:11 +00:00
impl Pinger {
2019-05-28 00:01:21 +00:00
pub fn new(server: Addr<Server>, threads: usize) -> Self {
Pinger { server, threads }
2018-12-16 18:43:44 +00:00
}
}
2019-05-27 17:29:11 +00:00
impl Actor for Pinger {
2018-12-16 18:43:44 +00:00
type Context = Context<Self>;
fn started(&mut self, ctx: &mut Self::Context) {
ctx.run_interval(Duration::from_secs(1), |actor, _| {
2019-05-28 00:01:21 +00:00
for _ in 0..actor.threads {
actor.server.do_send(CheckDb);
}
2018-12-16 18:43:44 +00:00
});
}
}