This commit is contained in:
Bastian Gruber 2023-05-01 11:52:22 +02:00
parent a25a66e008
commit bcc51d3f0e
No known key found for this signature in database
GPG key ID: BE9F8C772B188CBF

View file

@ -1,5 +1,4 @@
use std::collections::HashMap; use std::collections::HashMap;
use std::sync::Mutex;
use std::{io, net::SocketAddr, str, sync::Arc}; use std::{io, net::SocketAddr, str, sync::Arc};
use tokio::{net::UdpSocket, sync::mpsc}; use tokio::{net::UdpSocket, sync::mpsc};
use tracing::info; use tracing::info;
@ -14,7 +13,7 @@ async fn main() -> io::Result<()> {
let r = Arc::new(sock); let r = Arc::new(sock);
let s = r.clone(); let s = r.clone();
let (tx, mut rx) = mpsc::channel::<(Vec<u8>, SocketAddr)>(1_000); let (tx, mut rx) = mpsc::channel::<(Vec<u8>, SocketAddr)>(1_000);
let storage = Arc::new(Mutex::new(HashMap::<String, String>::new())); let mut storage = HashMap::<String, String>::new();
tokio::spawn(async move { tokio::spawn(async move {
info!("Send back!"); info!("Send back!");
@ -33,16 +32,11 @@ async fn main() -> io::Result<()> {
let message = format!("version=gruberb 1.0"); let message = format!("version=gruberb 1.0");
tx.send((message.as_bytes().to_vec(), addr)).await.unwrap(); tx.send((message.as_bytes().to_vec(), addr)).await.unwrap();
} else if message.contains("=") { } else if message.contains("=") {
let (mut key, value) = message.split_once('=').unwrap(); let (key, value) = message.split_once('=').unwrap();
if key.is_empty() {
key = " ";
}
storage storage
.lock()
.unwrap()
.insert(key.to_string(), value.to_string()); .insert(key.to_string(), value.to_string());
} else { } else {
let value = storage.lock().unwrap().get(message).unwrap_or(&String::new()).clone(); let value = storage.get(message).unwrap_or(&String::new()).clone();
let message = format!("{message}={value}"); let message = format!("{message}={value}");
tx.send((message.as_bytes().to_vec(), addr)).await.unwrap(); tx.send((message.as_bytes().to_vec(), addr)).await.unwrap();
} }