added server comm
This commit is contained in:
@@ -153,3 +153,56 @@ pub async fn send_metrics(
|
|||||||
|
|
||||||
Ok(())
|
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::<ServerMessage>().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,
|
||||||
|
}
|
||||||
|
}
|
@@ -72,3 +72,10 @@ pub struct HardwareDto {
|
|||||||
pub ram_size: f64,
|
pub ram_size: f64,
|
||||||
pub ip_address: String,
|
pub ip_address: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum ServerMessage {
|
||||||
|
Restart,
|
||||||
|
Log(String),
|
||||||
|
Update(String),
|
||||||
|
Unknown,
|
||||||
|
}
|
Reference in New Issue
Block a user