use crates::serde_json::Value;
use director::Director;
use error::Result;
use handler::{Handler, HandlerResult};
#[derive(Debug, Clone, Copy, Default)]
pub struct DirectorWatchdog;
impl Handler for DirectorWatchdog {
fn add_to_director<'a>(&'a self, director: &mut Director<'a>) -> Result<()> {
director.add_handler("watchdog:restart", self)?;
director.add_handler("watchdog:exit", self)?;
Ok(())
}
fn handle(&self, kind: &str, _: &Value) -> Result<HandlerResult> {
Ok(match kind {
"watchdog:restart" => HandlerResult::Restart,
"watchdog:exit" => HandlerResult::Done,
_ => HandlerResult::Reject(format!("watchdog received an unhandled {} job", kind)),
})
}
}