keep track of names on the server

This commit is contained in:
Andy Killorin 2024-12-07 21:20:29 -05:00
parent d034bbd989
commit 46527362d7
Signed by: ank
GPG key ID: B6241CA3B552BCA4

View file

@ -86,7 +86,7 @@ async fn main() -> Result<()>{
fish: fish.clone(),
last_badge: last_badge.clone(),
net_status: network_status.clone(),
badge_map
badge_map : badge_map.clone(),
});
let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await.unwrap();
@ -99,6 +99,14 @@ async fn main() -> Result<()>{
loop {
match get_recent_badge(fish_.clone()).await {
Result::Ok(badge) => {
let name = Name::from_badge(badge);
let name = match name {
Name::Unknown => {
badge_map.read().await.get(&badge).unwrap_or(&"Unknown".to_string()).clone()
},
name => format!("{name:?}"),
};
info!("badge scanned: {name} ({badge:#0x})");
*last_badge.write().await = (badge, Instant::now());
},
Err(e) => {
@ -184,7 +192,6 @@ async fn get_recent_badge(fish: Arc<Semaphore>) -> Result<u64> {
let badge = conn.read_u64().await?;
if badge != 0 {
info!("new badge: {badge:#0x}");
Ok(badge)
} else {
Err(anyhow::anyhow!("no badge present"))
@ -336,6 +343,8 @@ async fn set_last(
let (last_badge, _) = *state.last_badge.read().await;
state.badge_map.write().await.insert(last_badge, input.name.clone());
let name_e = match input.name.as_str() {
"Tess" => Name::Tess,
"Amaia" => Name::Amaia,
@ -345,11 +354,7 @@ async fn set_last(
"Thia" => Name::Thia,
"Michael" => Name::Michael,
"Zoey" => Name::Zoey,
name => {
state.badge_map.write().await.insert(last_badge, name.to_string());
Name::Unknown
},
_ => Name::Unknown,
};
info!("setting {} ({name_e:?}) to {last_badge:#0x}", input.name);