From 0579a51262f960ddf05f796bbabde61558394138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=B8=D0=B3=D0=BE=D1=80=D0=B8=D0=B9=20=D0=A1?= =?UTF-8?q?=D0=B0=D1=84=D1=80=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sat, 14 Jun 2025 21:12:47 +0000 Subject: [PATCH] Delete futriix-server/src/server.rs --- futriix-server/src/server.rs | 123 ----------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 futriix-server/src/server.rs diff --git a/futriix-server/src/server.rs b/futriix-server/src/server.rs deleted file mode 100644 index 7465a88..0000000 --- a/futriix-server/src/server.rs +++ /dev/null @@ -1,123 +0,0 @@ -use serde::{Deserialize, Serialize}; -use std::collections::HashMap; -use std::sync::Arc; -use parking_lot::RwLock; -use crossbeam::queue::SegQueue; -use tokio::net::{TcpListener, TcpStream}; -use tokio::io::{AsyncReadExt, AsyncWriteExt}; -use log::{info, error}; -use colored::Colorize; - -#[derive(Debug, Serialize, Deserialize)] -pub enum Command { - Insert { key: String, value: serde_json::Value }, - Get { key: String }, - Update { key: String, value: serde_json::Value }, - Delete { key: String }, -} - -#[derive(Debug, Serialize, Deserialize)] -pub enum Response { - Success(Option), - Error(String), -} - -pub struct FutriixServer { - db: Arc>>, - command_queue: Arc>, -} - -impl FutriixServer { - pub fn new() -> Self { - FutriixServer { - db: Arc::new(RwLock::new(HashMap::new())), - command_queue: Arc::new(SegQueue::new()), - } - } - - pub async fn run(&self, addr: &str) -> Result<(), Box> { - let listener = TcpListener::bind(addr).await?; - - info!("{}", "Futriix Server started successfully!".bright_blue()); - info!("Listening on: {}", addr); - - loop { - let (socket, _) = listener.accept().await?; - let db = self.db.clone(); - let queue = self.command_queue.clone(); - - tokio::spawn(async move { - if let Err(e) = Self::handle_connection(socket, db, queue).await { - error!("Connection error: {}", e); - } - }); - } - } - - async fn handle_connection( - mut socket: TcpStream, - db: Arc>>, - queue: Arc>, - ) -> Result<(), Box> { - loop { - // Read command length - let mut len_buf = [0u8; 4]; - if let Err(e) = socket.read_exact(&mut len_buf).await { - if e.kind() == std::io::ErrorKind::UnexpectedEof { - break; // Client disconnected - } - return Err(e.into()); - } - let len = u32::from_be_bytes(len_buf) as usize; - - // Read command - let mut buf = vec![0u8; len]; - socket.read_exact(&mut buf).await?; - - let cmd: Command = rmp_serde::from_slice(&buf)?; - queue.push(cmd); - - while let Some(cmd) = queue.pop() { - let response = match cmd { - Command::Insert { key, value } => { - let mut db = db.write(); - db.insert(key, value); - Response::Success(None) - } - Command::Get { key } => { - let db = db.read(); - match db.get(&key) { - Some(value) => Response::Success(Some(value.clone())), - None => Response::Error("Key not found".to_string()), - } - } - Command::Update { key, value } => { - let mut db = db.write(); - if db.contains_key(&key) { - db.insert(key, value); - Response::Success(None) - } else { - Response::Error("Key not found".to_string()) - } - } - Command::Delete { key } => { - let mut db = db.write(); - if db.remove(&key).is_some() { - Response::Success(None) - } else { - Response::Error("Key not found".to_string()) - } - } - }; - - let response_bytes = rmp_serde::to_vec(&response)?; - // Send response length - let len = response_bytes.len() as u32; - socket.write_all(&len.to_be_bytes()).await?; - // Send response - socket.write_all(&response_bytes).await?; - } - } - Ok(()) - } -}