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
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|