]> piware.de Git - learn-rust.git/blobdiff - tokio-tutorial-mini-redis/src/bin/server.rs
tokio-tutorial-mini-redis: Add logging
[learn-rust.git] / tokio-tutorial-mini-redis / src / bin / server.rs
index 2488f033ead6e2808c08fe6f4499e3b0818f9d15..441ea1881c90007acb12897eb0fb89a060948b5c 100644 (file)
@@ -8,14 +8,20 @@ use tokio::net::{TcpListener, TcpStream};
 
 type Db = Arc<Mutex<HashMap<String, Bytes>>>;
 
+const LISTEN: &str = "127.0.0.1:6379";
+
 #[tokio::main]
 async fn main() {
-    let listener = TcpListener::bind("127.0.0.1:6379").await.unwrap();
+    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("debug")).init();
+
+    let listener = TcpListener::bind(LISTEN).await.unwrap();
+    log::info!("Listening on {}", LISTEN);
     let db: Db = Arc::new(Mutex::new(HashMap::new()));
 
     loop {
         // The second item contains the IP and port of the new connection
-        let (socket, _) = listener.accept().await.unwrap();
+        let (socket, addr) = listener.accept().await.unwrap();
+        log::debug!("got connection from {:?}", addr);
         let db_i = db.clone();
         tokio::spawn(async move { process(socket, db_i).await });
     }
@@ -29,12 +35,15 @@ async fn process(socket: TcpStream, db: Db) {
             Set(cmd) => {
                 // The value is stored as `Vec<u8>`
                 db.lock().unwrap().insert(cmd.key().to_string(), cmd.value().clone());
+                log::debug!("Set {} → {:?}", &cmd.key(), &cmd.value());
                 Frame::Simple("OK".to_string())
             }
             Get(cmd) => {
                 if let Some(value) = db.lock().unwrap().get(cmd.key()) {
+                    log::debug!("Get {} → {:?}", &cmd.key(), &value);
                     Frame::Bulk(value.clone())
                 } else {
+                    log::debug!("Get {} unknown key", &cmd.key());
                     Frame::Null
                 }
             }