parent
8d1e813c0b
commit
f860fe3689
6 changed files with 114 additions and 104 deletions
src/command_utils
40
src/command_utils/events.rs
Normal file
40
src/command_utils/events.rs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue