mirror of
https://github.com/guilhermewerner/mini-redis
synced 2025-06-16 06:55:01 +00:00
29 lines
910 B
Rust
29 lines
910 B
Rust
use mini_redis::{Connection, Frame};
|
|
use tokio::net::{TcpListener, TcpStream};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
// Bind the listener to the address
|
|
let listener = TcpListener::bind("127.0.0.1:6379").await.unwrap();
|
|
|
|
loop {
|
|
// The second item contains the IP and port of the new connection.
|
|
let (socket, _) = listener.accept().await.unwrap();
|
|
process(socket).await;
|
|
}
|
|
}
|
|
|
|
async fn process(socket: TcpStream) {
|
|
// The `Connection` lets us read/write redis **frames** instead of
|
|
// byte streams. The `Connection` type is defined by mini-redis.
|
|
let mut connection = Connection::new(socket);
|
|
|
|
if let Some(frame) = connection.read_frame().await.unwrap() {
|
|
println!("GOT: {:?}", frame);
|
|
|
|
// Respond with an error
|
|
let response = Frame::Error("unimplemented".to_string());
|
|
connection.write_frame(&response).await.unwrap();
|
|
}
|
|
}
|