diff --git a/noxis-rs/src/options/structs.rs b/noxis-rs/src/options/structs.rs index c253282..413050e 100644 --- a/noxis-rs/src/options/structs.rs +++ b/noxis-rs/src/options/structs.rs @@ -3,6 +3,7 @@ use std::net::Ipv4Addr; use serde::{Deserialize, Serialize}; use async_trait::async_trait; +use std::sync::Arc; pub enum DependencyType { File, @@ -37,44 +38,44 @@ impl std::fmt::Display for FileTriggerType { } impl<'a> FileTriggerType { - pub fn event(&self, file_name: &'a str, trigger: &'a str) -> Events<'a> { + pub fn event(&self, file_name: Arc, trigger: Arc) -> Events { return match self { FileTriggerType::OnChange => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger)), FileTriggerType::OnDelete => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger)), } } - pub fn event_from_file_trigger_controller(&self, file_name: &'a str, trigger: &FileTriggersForController<'a>) -> Events<'a> { + pub fn event_from_file_trigger_controller(&self, file_name: Arc, trigger: &FileTriggersForController) -> Events { return match self { - FileTriggerType::OnChange => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger.on_change)), - FileTriggerType::OnDelete => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger.on_delete)), + FileTriggerType::OnChange => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger.on_change.clone())), + FileTriggerType::OnDelete => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger.on_delete.clone())), } } } #[derive(Debug)] -pub enum Triggers<'a> { - File{ on_change: &'a str, on_delete: &'a str }, - Service{on_lost: &'a str, wait: u32}, +pub enum Triggers { + File { on_change: Arc, on_delete: Arc }, + Service {on_lost: Arc, wait: u32}, } -impl<'a> Triggers<'a> { - pub fn new_file(on_change: &'a str, on_delete: &'a str) -> Triggers<'a> { +impl Triggers { + pub fn new_file(on_change: Arc, on_delete: Arc) -> Triggers { Triggers::File { on_change, on_delete } } - pub fn new_service(on_lost: &'a str, wait_time: u32) -> Triggers<'a> { + pub fn new_service(on_lost: Arc, wait_time: u32) -> Triggers { Triggers::Service{on_lost, wait: wait_time} } - pub fn to_service_negative_event(&'a self, service_name: &'a str) -> Option> { + pub fn to_service_negative_event(&self, service_name: Arc) -> Option { if let Triggers::Service { on_lost, .. } = self { - return Some(Events::Negative(NegativeOutcomes::ServiceIsUnreachable(service_name, DependencyType::Service, &on_lost))) + return Some(Events::Negative(NegativeOutcomes::ServiceIsUnreachable(service_name, DependencyType::Service, on_lost.clone()))) } None } } #[derive(Debug)] -pub struct FileTriggersForController<'a> { pub on_change: &'a str, pub on_delete: &'a str } -pub struct ServiceTriggersForController<'a>(&'a str); +pub struct FileTriggersForController{ pub on_change: Arc, pub on_delete: Arc } +pub struct ServiceTriggersForController(Arc); impl std::fmt::Display for DependencyType { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { @@ -92,19 +93,19 @@ pub enum ProcessState { Stopped, StoppedByCli, } -pub enum Events<'a> { - Positive(&'a str), - Negative(NegativeOutcomes<'a>) +pub enum Events { + Positive(Arc), + Negative(NegativeOutcomes) } -pub enum NegativeOutcomes<'a> { - FileWasChanged(&'a str, DependencyType, &'a str), - FileWasMovedOrDeleted(&'a str, DependencyType, &'a str), - ServiceIsUnreachable(&'a str, DependencyType, &'a str), +pub enum NegativeOutcomes { + FileWasChanged(Arc, DependencyType, Arc), + FileWasMovedOrDeleted(Arc, DependencyType, Arc), + ServiceIsUnreachable(Arc, DependencyType, Arc), } #[async_trait] -pub trait ProcessUnit<'a> { - async fn process(&'a mut self); +pub trait ProcessUnit { + async fn process(&mut self); } /// # an Error enum (next will be deleted and replaced) pub enum CustomError {