Improve error handling for events and in general

This commit is contained in:
Tobias Reisinger 2024-03-27 15:37:52 +01:00
parent 8d1e813c0b
commit f860fe3689
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
6 changed files with 114 additions and 104 deletions
src/command_utils

View file

@ -0,0 +1,40 @@
use telnet::Telnet;
use crate::commands;
use crate::models::{Event, EventType};
use crate::response::Response;
pub fn register_events(connection: &mut Telnet, events: Vec<EventType>) -> Result<(), String> {
for event in events {
if commands::clientnotifyregister(connection, 1, event).is_err() {
return Err(String::from("Failed to register event listener."));
}
}
Ok(())
}
pub fn handle_event_response(connection: &mut Telnet, response: Response) {
if let Response::Event(event_type, params) = response {
let event = Event::new(connection, event_type, params);
match serde_json::to_string(&event) {
Ok(json) => println!("{}", json),
Err(err) => {
// TODO: Handle serialization error
eprintln!("Serialization error: {}", err);
}
}
}
}
pub fn loop_response_reader(connection: &mut Telnet) {
loop {
match commands::read_response(connection, true, String::new()) {
Ok(response) => handle_event_response(connection, response),
Err(_) => {
// print error?
return;
}
}
}
}