From 314bf8c3270d173c9b25c8dece79edb93c25525f Mon Sep 17 00:00:00 2001 From: donpat1to Date: Sun, 21 Sep 2025 01:40:32 +0200 Subject: [PATCH] added server comm --- WatcherAgent/src/api.rs | 53 ++++++++++++++++++++++++++++++++++++++ WatcherAgent/src/models.rs | 7 +++++ 2 files changed, 60 insertions(+) diff --git a/WatcherAgent/src/api.rs b/WatcherAgent/src/api.rs index d3712ea..c1eec6f 100644 --- a/WatcherAgent/src/api.rs +++ b/WatcherAgent/src/api.rs @@ -153,3 +153,56 @@ pub async fn send_metrics( Ok(()) } + +pub async fn listening_to_server(base_url: &str){ + loop { + // Replace with your server endpoint + let resp = reqwest::get("http://my-server.local/api/message") + .await; + + if let Ok(resp) = resp { + if let Ok(msg) = resp.json::().await { + handle_message(msg).await; + } else { + eprintln!("Failed to parse message"); + } + } else { + eprintln!("Failed to reach server"); + } + + // Poll every 5 seconds (or use WebSocket for real-time) + sleep(Duration::from_secs(5)).await; + } +} + +fn handle_message(msg: ServerMessage) { + match msg { + ServerMessage::Restart => restart_container(), + ServerMessage::Log(data) => log_data(&data), + ServerMessage::Update(ver) => update_client(&ver), + ServerMessage::Unknown => eprintln!("Unknown message"), + } +} + +fn restart_container() { + println!("Restarting..."); + std::process::exit(1); // let Docker restart it +} + +fn log_data(data: &str) { + println!("Log: {}", data); +} + +fn update_client(version: &str) { + println!("Updating to version {}", version); +} + +// Example parser (pretend server sends simple strings) +fn parse_message(raw: &str) -> ServerMessage { + match raw { + "restart" => ServerMessage::Restart, + msg if msg.starts_with("log:") => ServerMessage::Log(msg[4..].to_string()), + msg if msg.starts_with("update:") => ServerMessage::Update(msg[7..].to_string()), + _ => ServerMessage::Unknown, + } +} \ No newline at end of file diff --git a/WatcherAgent/src/models.rs b/WatcherAgent/src/models.rs index 32ab76c..4425a67 100644 --- a/WatcherAgent/src/models.rs +++ b/WatcherAgent/src/models.rs @@ -72,3 +72,10 @@ pub struct HardwareDto { pub ram_size: f64, pub ip_address: String, } + +pub enum ServerMessage { + Restart, + Log(String), + Update(String), + Unknown, +} \ No newline at end of file