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