Improve events
Add known clients (cache) for leaving clients Add message to returned json object
This commit is contained in:
parent
f860fe3689
commit
ae411b6dcc
7 changed files with 117 additions and 24 deletions
src/command_utils
|
@ -1,6 +1,6 @@
|
|||
use telnet::Telnet;
|
||||
use crate::commands;
|
||||
use crate::models::{Event, EventType};
|
||||
use crate::{commands, wrappers};
|
||||
use crate::models::{Client, Event, EventType};
|
||||
use crate::response::Response;
|
||||
|
||||
pub fn register_events(connection: &mut Telnet, events: Vec<EventType>) -> Result<(), String> {
|
||||
|
@ -12,10 +12,10 @@ pub fn register_events(connection: &mut Telnet, events: Vec<EventType>) -> Resul
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn handle_event_response(connection: &mut Telnet, response: Response) {
|
||||
pub fn handle_event_response(connection: &mut Telnet, response: Response, known_clients: &mut Vec<Client>) {
|
||||
if let Response::Event(event_type, params) = response {
|
||||
|
||||
let event = Event::new(connection, event_type, params);
|
||||
let event = Event::new(connection, event_type, params, &known_clients);
|
||||
match serde_json::to_string(&event) {
|
||||
Ok(json) => println!("{}", json),
|
||||
Err(err) => {
|
||||
|
@ -24,13 +24,17 @@ pub fn handle_event_response(connection: &mut Telnet, response: Response) {
|
|||
}
|
||||
}
|
||||
|
||||
if let Ok(new_clients) = wrappers::get_clients(connection) {
|
||||
*known_clients = new_clients;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn loop_response_reader(connection: &mut Telnet) {
|
||||
let mut known_clients = wrappers::get_clients(connection).unwrap_or_else(|_| Vec::new());
|
||||
loop {
|
||||
match commands::read_response(connection, true, String::new()) {
|
||||
Ok(response) => handle_event_response(connection, response),
|
||||
Ok(response) => handle_event_response(connection, response, &mut known_clients),
|
||||
Err(_) => {
|
||||
// print error?
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue