From cb3d8b354f8edc43bf2113d951cf84b2cb62ef7e Mon Sep 17 00:00:00 2001 From: prplV Date: Tue, 30 Jul 2024 14:40:48 +0300 Subject: [PATCH] no service-checker script anymore, only rust --- src/main.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index b1304b0..61322e8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,15 +3,14 @@ use redis::Commands; use serde::{ Deserialize, Serialize }; use serde_json; // async multi-threaded execution -use tokio::time::{ error, Duration, Instant }; +use tokio::time::{ Duration, Instant }; use tokio::sync::mpsc; use tokio::join; // fatal errors handler -use core::{panic, time}; +use core::panic; // utils use std::fmt::Debug; use std::fs; -use std::os::unix::process; use std::path::Path; use std::process::{ Command, Output }; use std::sync::Arc; @@ -22,6 +21,7 @@ use std::io::Write; use chrono::{Local, Utc}; use env_logger::Builder; use log::{error, warn, LevelFilter}; +use std::net::{TcpStream, ToSocketAddrs}; static CONFIG_PATH : &'static str = "settings.json"; @@ -713,20 +713,20 @@ async fn looped_service_connecting( return Err(CustomError::Fatal); } } -async fn check_service(host: &str, port: &u32) -> Result<(), CustomError> { - let mut command = Command::new("bash"); - command.args(["service-checker.sh", host, &port.to_string()]); - match command.output() { - Ok(output) => { - if output.status.success() { +// ! have to be rewritten +// todo: rewrite use +async fn check_service(hostname: &str, port: &u32) -> Result<(), CustomError> { + let addr = format!("{}:{}", hostname, port); + + match addr.to_socket_addrs() { + Ok(mut addrs) => { + if let Some(_) = addrs.find(|a| TcpStream::connect_timeout(a, std::time::Duration::new(1, 0)).is_ok()) { return Ok(()); } else { return Err(CustomError::Fatal); } - }, - Err(_) => { - return Err(CustomError::Fatal); }, - }; + Err(_) => return Err(CustomError::Fatal), + } } \ No newline at end of file