OWNERSHIP FIX: structs with Arc<str> (instead of &'_ str)
parent
6d56d1e39c
commit
052448a7b9
|
|
@ -3,6 +3,7 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::Ipv4Addr;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
pub enum DependencyType {
|
pub enum DependencyType {
|
||||||
File,
|
File,
|
||||||
|
|
@ -37,44 +38,44 @@ impl std::fmt::Display for FileTriggerType {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> FileTriggerType {
|
impl<'a> FileTriggerType {
|
||||||
pub fn event(&self, file_name: &'a str, trigger: &'a str) -> Events<'a> {
|
pub fn event(&self, file_name: Arc<str>, trigger: Arc<str>) -> Events {
|
||||||
return match self {
|
return match self {
|
||||||
FileTriggerType::OnChange => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger)),
|
FileTriggerType::OnChange => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger)),
|
||||||
FileTriggerType::OnDelete => 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<str>, trigger: &FileTriggersForController) -> Events {
|
||||||
return match self {
|
return match self {
|
||||||
FileTriggerType::OnChange => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger.on_change)),
|
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)),
|
FileTriggerType::OnDelete => Events::Negative(NegativeOutcomes::FileWasChanged(file_name, DependencyType::File, trigger.on_delete.clone())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Triggers<'a> {
|
pub enum Triggers {
|
||||||
File{ on_change: &'a str, on_delete: &'a str },
|
File { on_change: Arc<str>, on_delete: Arc<str> },
|
||||||
Service{on_lost: &'a str, wait: u32},
|
Service {on_lost: Arc<str>, wait: u32},
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Triggers<'a> {
|
impl Triggers {
|
||||||
pub fn new_file(on_change: &'a str, on_delete: &'a str) -> Triggers<'a> {
|
pub fn new_file(on_change: Arc<str>, on_delete: Arc<str>) -> Triggers {
|
||||||
Triggers::File { on_change, on_delete }
|
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<str>, wait_time: u32) -> Triggers {
|
||||||
Triggers::Service{on_lost, wait: wait_time}
|
Triggers::Service{on_lost, wait: wait_time}
|
||||||
}
|
}
|
||||||
pub fn to_service_negative_event(&'a self, service_name: &'a str) -> Option<Events<'a>> {
|
pub fn to_service_negative_event(&self, service_name: Arc<str>) -> Option<Events> {
|
||||||
if let Triggers::Service { on_lost, .. } = self {
|
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
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct FileTriggersForController<'a> { pub on_change: &'a str, pub on_delete: &'a str }
|
pub struct FileTriggersForController{ pub on_change: Arc<str>, pub on_delete: Arc<str> }
|
||||||
pub struct ServiceTriggersForController<'a>(&'a str);
|
pub struct ServiceTriggersForController(Arc<str>);
|
||||||
|
|
||||||
impl std::fmt::Display for DependencyType {
|
impl std::fmt::Display for DependencyType {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||||
|
|
@ -92,19 +93,19 @@ pub enum ProcessState {
|
||||||
Stopped,
|
Stopped,
|
||||||
StoppedByCli,
|
StoppedByCli,
|
||||||
}
|
}
|
||||||
pub enum Events<'a> {
|
pub enum Events {
|
||||||
Positive(&'a str),
|
Positive(Arc<str>),
|
||||||
Negative(NegativeOutcomes<'a>)
|
Negative(NegativeOutcomes)
|
||||||
}
|
}
|
||||||
pub enum NegativeOutcomes<'a> {
|
pub enum NegativeOutcomes {
|
||||||
FileWasChanged(&'a str, DependencyType, &'a str),
|
FileWasChanged(Arc<str>, DependencyType, Arc<str>),
|
||||||
FileWasMovedOrDeleted(&'a str, DependencyType, &'a str),
|
FileWasMovedOrDeleted(Arc<str>, DependencyType, Arc<str>),
|
||||||
ServiceIsUnreachable(&'a str, DependencyType, &'a str),
|
ServiceIsUnreachable(Arc<str>, DependencyType, Arc<str>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
pub trait ProcessUnit<'a> {
|
pub trait ProcessUnit {
|
||||||
async fn process(&'a mut self);
|
async fn process(&mut self);
|
||||||
}
|
}
|
||||||
/// # an Error enum (next will be deleted and replaced)
|
/// # an Error enum (next will be deleted and replaced)
|
||||||
pub enum CustomError {
|
pub enum CustomError {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue