aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs37
1 files changed, 28 insertions, 9 deletions
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(())
}