little chngs + loop not to hide prcs
parent
26f5a1f543
commit
38b9d77391
|
|
@ -17,8 +17,8 @@
|
||||||
"hostname" : "ya.ru",
|
"hostname" : "ya.ru",
|
||||||
"port" : 443,
|
"port" : 443,
|
||||||
"triggers" : {
|
"triggers" : {
|
||||||
"wait" : 12,
|
"wait" : 6,
|
||||||
"delay" : 3
|
"delay" : 1
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
|
@ -33,10 +33,10 @@
|
||||||
"src" : "/home/vladislav/web/"
|
"src" : "/home/vladislav/web/"
|
||||||
}],
|
}],
|
||||||
"services" : [{
|
"services" : [{
|
||||||
"hostname" : "localhost",
|
"hostname" : "ya.ru",
|
||||||
"port" : 8080,
|
"port" : 443,
|
||||||
"triggers" : {
|
"triggers" : {
|
||||||
"wait" : 21,
|
"wait" : 14,
|
||||||
"delay" : 1
|
"delay" : 1
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
|
|
|
||||||
63
src/main.rs
63
src/main.rs
|
|
@ -56,7 +56,7 @@ struct ServiceTriggers {
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
let processes = load_processes("settings.json");
|
let processes = load_processes("settings.json");
|
||||||
let mut error_counter = 0;
|
// let mut error_counter = 0;
|
||||||
|
|
||||||
if processes.processes.len() == 0 {
|
if processes.processes.len() == 0 {
|
||||||
eprintln!("Error: Processes list is null, runner-rs initialization is stopped");
|
eprintln!("Error: Processes list is null, runner-rs initialization is stopped");
|
||||||
|
|
@ -109,33 +109,36 @@ async fn run_daemons(
|
||||||
proc: &TrackingProcess,
|
proc: &TrackingProcess,
|
||||||
tx: mpsc::Sender<u8>,
|
tx: mpsc::Sender<u8>,
|
||||||
rx: &mut mpsc::Receiver<u8>
|
rx: &mut mpsc::Receiver<u8>
|
||||||
) {
|
)
|
||||||
|
{
|
||||||
|
loop {
|
||||||
|
let run_hand = running_handler(&proc.name, &proc.path, tx.clone());
|
||||||
|
let file_hand = file_handler(&proc.name,&proc.dependencies.files, tx.clone());
|
||||||
|
let serv_hand = service_handler(&proc.name, &proc.dependencies.services, tx.clone());
|
||||||
|
|
||||||
let run_hand = running_handler(&proc.name, &proc.path, tx.clone());
|
tokio::select! {
|
||||||
let file_hand = file_handler(&proc.name,&proc.dependencies.files, tx.clone());
|
_ = run_hand => {},
|
||||||
let serv_hand = service_handler(&proc.name, &proc.dependencies.services, tx.clone());
|
_ = file_hand => {},
|
||||||
|
_ = serv_hand => {},
|
||||||
tokio::select! {
|
_val = rx.recv() => {
|
||||||
_ = run_hand => {},
|
match _val.unwrap() {
|
||||||
_ = file_hand => {},
|
1 => {
|
||||||
_ = serv_hand => {},
|
println!("Dependency handling error: Terminating {} process ..." , &proc.name);
|
||||||
_val = rx.recv() => {
|
terminate_process(&proc.name).await;
|
||||||
match _val.unwrap() {
|
},
|
||||||
1 => {
|
2 => {
|
||||||
terminate_process(&proc.name).await;
|
println!("Error due to starting {} process", &proc.name);
|
||||||
println!("Dependency handling error: Terminating {} process ..." , &proc.name);
|
},
|
||||||
},
|
3 => {
|
||||||
2 => {
|
println!("Timeout of waiting service-dependency: Terminating {} process ..." , &proc.name);
|
||||||
println!("Error due to starting {} process", &proc.name);
|
terminate_process(&proc.name).await;
|
||||||
},
|
},
|
||||||
3 => {
|
_ => {},
|
||||||
terminate_process(&proc.name).await;
|
}
|
||||||
println!("Timeout of waiting service-dependency: Terminating {} process ..." , &proc.name);
|
},
|
||||||
},
|
}
|
||||||
_ => {},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_processes(json_filename: &str) -> Processes{
|
fn load_processes(json_filename: &str) -> Processes{
|
||||||
|
|
@ -174,7 +177,7 @@ async fn start_process(name: &str, path: &str, tx: mpsc::Sender<u8>) -> Result<(
|
||||||
// check process status daemon
|
// check process status daemon
|
||||||
async fn running_handler(name: &str, path: &str, tx: mpsc::Sender<u8>){
|
async fn running_handler(name: &str, path: &str, tx: mpsc::Sender<u8>){
|
||||||
loop {
|
loop {
|
||||||
// println!("running daemon on {}", name);
|
println!("running daemon on {}", name);
|
||||||
let _ = Command::new("pidof")
|
let _ = Command::new("pidof")
|
||||||
.arg(name)
|
.arg(name)
|
||||||
.output()
|
.output()
|
||||||
|
|
@ -194,7 +197,7 @@ async fn running_handler(name: &str, path: &str, tx: mpsc::Sender<u8>){
|
||||||
|
|
||||||
async fn file_handler(name: &str, files: &Vec<Files>, tx: mpsc::Sender<u8>) {
|
async fn file_handler(name: &str, files: &Vec<Files>, tx: mpsc::Sender<u8>) {
|
||||||
loop {
|
loop {
|
||||||
// println!("file daemon on {}", name);
|
println!("file daemon on {}", name);
|
||||||
if is_active(name) {
|
if is_active(name) {
|
||||||
for file in files {
|
for file in files {
|
||||||
match check_file(&file.filename, &file.src) {
|
match check_file(&file.filename, &file.src) {
|
||||||
|
|
@ -220,8 +223,8 @@ fn check_file(filename: &str, path: &str) -> Result<(), CustomError> {
|
||||||
|
|
||||||
// ??
|
// ??
|
||||||
async fn service_handler(name: &str, services: &Vec<Services>, tx: mpsc::Sender<u8>) {
|
async fn service_handler(name: &str, services: &Vec<Services>, tx: mpsc::Sender<u8>) {
|
||||||
'main_loop: loop {
|
loop {
|
||||||
// println!("service daemon on {}", name);
|
println!("service daemon on {}", name);
|
||||||
if is_active(name) {
|
if is_active(name) {
|
||||||
for serv in services {
|
for serv in services {
|
||||||
match check_service(&serv.hostname, &serv.port) {
|
match check_service(&serv.hostname, &serv.port) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue