files fix

feature/configv2
prplV 2025-05-05 09:14:25 -04:00
parent 3dd238cf97
commit aae0391a0c
1 changed files with 22 additions and 5 deletions

View File

@ -19,11 +19,18 @@
type MpscSender = Arc<Sender<Events>>;
type EventHandlers = HashMap<Arc<str>, (Triggers, MpscSender)>;
#[derive(Debug)]
enum FileState {
Ok,
NotFound,
}
#[derive(Debug)]
pub struct FilesController {
name : Arc<str>,
path : String,
code_name : Arc<str>,
state : FileState,
watcher : Option<Inotify>,
triggers : EventHandlers,
}
@ -38,9 +45,10 @@
pub fn new(name: &str, triggers: EventHandlers) -> FilesController {
let name: Arc<str> = Arc::from(name);
Self {
name: name.clone(),
name : name.clone(),
path : String::new(),
watcher: None,
state : FileState::Ok,
watcher : None,
triggers,
code_name : name.clone(),
}
@ -86,6 +94,12 @@
// 1) existing check
// dbg!(&self);
if let Ok(_) = check_file(&self.name, &self.path).await {
if let FileState::NotFound = self.state {
info!("File {} ({}) was found in determined scope. Notifying ...", self.name, self.code_name);
self.state = FileState::Ok;
// reseting negative outcome in prc
self.trigger_on(None).await;
}
match &mut self.watcher {
Some(notify) => {
let mut buffer = [0; 1024];
@ -110,7 +124,7 @@
},
}
}
self.trigger_on(Some(FileTriggerType::OnChange)).await;
self.trigger_on(Some(FileTriggerType::OnChange)).await;
return;
}
}
@ -118,8 +132,11 @@
None => { /* DEAD END */},
}
} else {
warn!("File {} ({}) was not found in determined scope", self.name, &self.path);
self.trigger_on(Some(FileTriggerType::OnDelete)).await;
if let FileState::Ok = self.state {
warn!("File {} ({}) was not found in determined scope", self.name, &self.path);
self.state = FileState::NotFound;
self.trigger_on(Some(FileTriggerType::OnDelete)).await;
}
return;
}
self.trigger_on(None).await;