This commit is contained in:
Bastian Gruber 2023-04-29 19:14:04 +02:00
parent 30a8894f76
commit 8edf4cad62
No known key found for this signature in database
GPG key ID: BE9F8C772B188CBF

View file

@ -37,6 +37,8 @@ async fn main() -> Result<()> {
let db = Users::default();
let mut valid_name = true;
// Infinite loop to always listen to new connections on this IP/PORT
loop {
let (stream, address) = listener.accept().await?;
@ -57,13 +59,14 @@ async fn main() -> Result<()> {
// we won't process until we find one.
match framed.next().await {
Some(Ok(username)) => {
if !username.is_empty() && name.chars().all(char::is_alphanumeric) {
if !username.is_empty() && username.chars().all(char::is_alphanumeric) {
name = username.clone();
db.0.lock().unwrap().insert(username.clone(), address);
let message = compose_message(username.clone(), db.clone());
info!("Adding username: {username} to db");
let _ = framed.send(message).await;
} else {
valid_name = false;
return;
}
}
@ -77,6 +80,10 @@ async fn main() -> Result<()> {
}
}
if !valid_name {
return;
}
let b = BroadcastMessage(
name.clone(),
format!("* {} has entered the room", name),
@ -123,7 +130,13 @@ async fn main() -> Result<()> {
}
}
});
if !valid_name {
break;
}
}
Ok(())
}
fn compose_message(name: String, db: Users) -> String {