From 41a2abac3f82703642d7f6472581400d2a7a7250 Mon Sep 17 00:00:00 2001 From: rasul Date: Sat, 26 Oct 2019 15:45:19 -0500 Subject: [PATCH] separate app shutdown --- src/apps.rs | 12 +++--------- src/main.rs | 8 +++++++- src/proc.rs | 5 +++++ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/apps.rs b/src/apps.rs index 27f3838..2a3e60b 100644 --- a/src/apps.rs +++ b/src/apps.rs @@ -49,13 +49,13 @@ impl Apps { (procs, holds) } - pub fn run(&self, procs: Vec, holds: Option) -> Result<()> { + pub fn run(&self, procs: Vec, holds: Option) -> Result> { let mut procs = procs; let mut holds = holds; if holds.unwrap_or(0) < 1 { error!("no holds configured"); - return Ok(()); + return Ok(Vec::new()); } while holds > Some(0) { @@ -99,12 +99,6 @@ impl Apps { procs = newprocs; } - info!("shutting down"); - for mut proc in procs { - info!("stopping {}", &proc.app.name); - let _ = proc.child.kill(); - } - - Ok(()) + Ok(procs) } } diff --git a/src/main.rs b/src/main.rs index b1cbc82..ed79520 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,6 +31,12 @@ fn main() { fn startup() -> Result<()> { let apps = Apps::load("sup.toml")?; let (procs, holds) = apps.start(); - apps.run(procs, holds)?; + let procs = apps.run(procs, holds)?; + + info!("shutting down"); + for mut proc in procs { + proc.stop(); + } + Ok(()) } diff --git a/src/proc.rs b/src/proc.rs index 619a099..7173bcc 100644 --- a/src/proc.rs +++ b/src/proc.rs @@ -23,6 +23,11 @@ impl Proc { Ok(Proc { app, child }) } + pub fn stop(&mut self) { + info!("stopping {}", &self.app.name); + let _ = self.child.kill(); + } + pub fn check_stdout(&mut self) -> Option { let child_stdout = self.child.stdout.as_mut(); if let Some(stdout) = child_stdout {