From 90c075527f6dd3286a38981d777a27a257ee0c11 Mon Sep 17 00:00:00 2001 From: omagdy Date: Tue, 15 Jul 2025 01:33:59 +0300 Subject: codecrafters submit [skip ci] --- src/main.rs | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 5c89f41..c3a88b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,24 +1,43 @@ #![allow(unused_imports)] use std::{ io::{Read, Write}, - net::TcpListener, + net::{TcpListener, TcpStream}, + thread, }; -fn main() { +fn handle_client(mut stream: TcpStream) { + let mut buffer = [0; 512]; + loop { + let _bytes_read = match stream.read(&mut buffer) { + Ok(0) => return, // connection closed + Ok(n) => n, + Err(_) => return, // error occurred + }; + + // Hardcode PONG response for now + stream.write(b"+PONG\r\n").unwrap(); + + // Echo the message back + // if let Err(_) = stream.write_all(&buffer[..bytes_read]) { + // return; // writing failed + // } + } +} + +fn main() -> std::io::Result<()> { let listener = TcpListener::bind("127.0.0.1:6379").unwrap(); for stream in listener.incoming() { match stream { - Ok(mut stream) => { - let mut buf = [0; 512]; - loop { - let _ = stream.read(&mut buf).unwrap(); - stream.write(b"+PONG\r\n").unwrap(); - } + Ok(stream) => { + thread::spawn(|| { + handle_client(stream); + }); } Err(e) => { - println!("error: {}", e); + eprintln!("Connection failed: {}", e); } } } + Ok(()) } -- cgit v1.2.3