stop coutner when captcha is removed
This commit is contained in:
parent
6eac51de10
commit
1d4f97f511
1 changed files with 16 additions and 6 deletions
|
@ -30,6 +30,8 @@ use crate::errors::*;
|
||||||
use crate::master::messages::{AddSite, AddVisitor, RemoveCaptcha, Rename};
|
use crate::master::messages::{AddSite, AddVisitor, RemoveCaptcha, Rename};
|
||||||
use crate::master::Master as MasterTrait;
|
use crate::master::Master as MasterTrait;
|
||||||
|
|
||||||
|
use super::counter::{GetCurrentVisitorCount, Stop};
|
||||||
|
|
||||||
/// This Actor manages the [Counter] actors.
|
/// This Actor manages the [Counter] actors.
|
||||||
/// A service can have several [Counter] actors with
|
/// A service can have several [Counter] actors with
|
||||||
/// varying [Defense][crate::defense::Defense] configurations
|
/// varying [Defense][crate::defense::Defense] configurations
|
||||||
|
@ -68,8 +70,8 @@ impl Master {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// remvoes [Counter] actor from [Master]
|
/// remvoes [Counter] actor from [Master]
|
||||||
pub fn rm_site(&mut self, id: &str) {
|
pub fn rm_site(&mut self, id: &str) -> Option<(Option<()>, Addr<Counter>)> {
|
||||||
self.sites.remove(id);
|
self.sites.remove(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// renames [Counter] actor
|
/// renames [Counter] actor
|
||||||
|
@ -167,7 +169,6 @@ impl Handler<CleanUp> for Master {
|
||||||
info!("init master actor cleanup up");
|
info!("init master actor cleanup up");
|
||||||
let task = async move {
|
let task = async move {
|
||||||
for (id, (new, addr)) in sites.iter() {
|
for (id, (new, addr)) in sites.iter() {
|
||||||
use super::counter::{GetCurrentVisitorCount, Stop};
|
|
||||||
let visitor_count = addr.send(GetCurrentVisitorCount).await.unwrap();
|
let visitor_count = addr.send(GetCurrentVisitorCount).await.unwrap();
|
||||||
println!("{}", visitor_count);
|
println!("{}", visitor_count);
|
||||||
if visitor_count == 0 && new.is_some() {
|
if visitor_count == 0 && new.is_some() {
|
||||||
|
@ -190,10 +191,19 @@ impl Handler<CleanUp> for Master {
|
||||||
impl Handler<RemoveCaptcha> for Master {
|
impl Handler<RemoveCaptcha> for Master {
|
||||||
type Result = MessageResult<RemoveCaptcha>;
|
type Result = MessageResult<RemoveCaptcha>;
|
||||||
|
|
||||||
fn handle(&mut self, m: RemoveCaptcha, _ctx: &mut Self::Context) -> Self::Result {
|
fn handle(&mut self, m: RemoveCaptcha, ctx: &mut Self::Context) -> Self::Result {
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
self.rm_site(&m.0);
|
if let Some((_, addr)) = self.rm_site(&m.0) {
|
||||||
tx.send(Ok(())).unwrap();
|
let fut = async move {
|
||||||
|
//addr.send(Stop).await?;
|
||||||
|
let res: CaptchaResult<()> = addr.send(Stop).await.map_err(|e| e.into());
|
||||||
|
let _ = tx.send(res);
|
||||||
|
}
|
||||||
|
.into_actor(self);
|
||||||
|
ctx.spawn(fut);
|
||||||
|
} else {
|
||||||
|
tx.send(Ok(())).unwrap();
|
||||||
|
}
|
||||||
MessageResult(rx)
|
MessageResult(rx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue