1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
use crate::job::{Status, Work}; use colored::*; #[derive(Clone, Debug)] pub struct Executor { alias: String, } impl Executor { pub fn new(alias: String) -> Executor { Executor { alias } } pub fn startup(&self) -> Result<(), String> { println!( "{}{}{}", ":::: Starting Executor ".truecolor(0,0,0).bold().on_green(), self.alias.truecolor(0,0,0).bold().on_green(), " ::::".truecolor(0,0,0).bold().on_green() ); Ok(()) } pub async fn execute(&self, job: &Box<dyn Work>) -> Result<(), String> { match job.func().await { Status::Waiting => Ok(()), Status::Success => Ok(()), Status::Running => Ok(()), Status::Paused => Ok(()), Status::Failure(reason) => Err(reason), } } pub fn teardown(&self) -> Result<(), String> { println!( "{}{}{}", ":::: Tearing Down Executor ".truecolor(0,0,0).bold().on_green(), self.alias.truecolor(0,0,0).bold().on_green(), " ::::".truecolor(0,0,0).bold().on_green() ); Ok(()) } }