Debugging messages added
This commit is contained in:
parent
f80f4b6035
commit
dedc2d8ff9
3 changed files with 190 additions and 4 deletions
15
src/main.rs
15
src/main.rs
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue