Debugging messages added

This commit is contained in:
Martin Brodbeck 2023-10-03 22:11:06 +02:00
parent f80f4b6035
commit dedc2d8ff9
3 changed files with 190 additions and 4 deletions

View file

@ -1,5 +1,6 @@
use chrono::{DateTime, Duration, Local};
use std::{collections::HashMap, net::UdpSocket};
use log::debug;
const MAX_CLIENTS: usize = 10;
const CLIENT_TIMEOUT: u32 = 300;
@ -118,11 +119,15 @@ fn broadcast(
}
fn main() -> std::io::Result<()> {
env_logger::init();
let socket = UdpSocket::bind("0.0.0.0:7373")?;
socket
.set_read_timeout(None)
.expect("Could not set read timeout");
debug!("Morserino chat server started.");
let mut receivers2: HashMap<String, DateTime<Local>> = HashMap::new();
loop {
@ -133,9 +138,9 @@ fn main() -> std::io::Result<()> {
let data = &buf[0..number_of_bytes];
if receivers2.contains_key(&client_addr) {
//println!("Client already known.");
debug!("Client known: {client_addr}");
if strip_header(data) == strip_header(mopp(speed, b":bye").as_slice()) {
println!("TSCHAU");
debug!("Removing client {client_addr} as requested.");
socket
.send_to(mopp(speed, b":bye").as_slice(), &client_addr)
.unwrap();
@ -145,7 +150,7 @@ fn main() -> std::io::Result<()> {
receivers2.insert(client_addr.to_owned(), Local::now());
}
} else if strip_header(data) == strip_header(mopp(speed, b"hi").as_slice()) {
//println!("Welcome!");
debug!("Adding new client {client_addr}");
if receivers2.len() < MAX_CLIENTS {
receivers2.insert(client_addr.to_owned(), Local::now());
socket
@ -156,17 +161,19 @@ fn main() -> std::io::Result<()> {
)
.unwrap();
} else {
debug!("There are already too many clients connected.");
socket
.send_to(mopp(speed, b":qrl").as_slice(), &client_addr)
.unwrap();
}
} else {
//println!("Unknown client - Ignoring");
debug!("Ignoring unknown client {client_addr}");
}
let timestamp = Local::now();
for cl in &receivers2 {
if *cl.1 + Duration::seconds(CLIENT_TIMEOUT as i64) < timestamp {
debug!("Removing outdated client {}", cl.0);
socket
.send_to(mopp(MY_SPEED, b":bye").as_slice(), &client_addr)
.unwrap();