diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-09-24 00:58:03 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-09-24 00:58:03 +0800 |
| commit | 6721953fbed98e00d85032a11980fdf75d2ce6da (patch) | |
| tree | 87cd30ae47263961756a862bf526c89a7c425d7a /src/server | |
| parent | c7de2da6f9a966096d15d00cfc2c404fd086ae24 (diff) | |
formattcpserver
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/server/tcpserver.rs | 103 | ||||
| -rw-r--r-- | src/server/tasks.rs | 19 |
2 files changed, 40 insertions, 82 deletions
diff --git a/src/server/server/tcpserver.rs b/src/server/server/tcpserver.rs index f4f6968..20bf5f3 100644 --- a/src/server/server/tcpserver.rs +++ b/src/server/server/tcpserver.rs @@ -33,14 +33,12 @@ pub struct TCPServer<'a> { impl<'a> TCPServer<'a> { pub fn new(listener: TcpListener) -> Arc<Self> { - let s = Arc::new( - Self { - this: RefCell::new(Weak::new()), - listener, - task: None, - clients: RefCell::new(Vec::new()), - }, - ); + let s = Arc::new(Self { + this: RefCell::new(Weak::new()), + listener, + task: None, + clients: RefCell::new(Vec::new()), + }); *s.this .borrow_mut() = Arc::downgrade(&s); s @@ -68,16 +66,14 @@ impl<'a> Server<'a> for TCPServer<'a> { Ok((socket, addr)) => self .clients .borrow_mut() - .push( - Client::new( - self.this - .borrow() - .upgrade() - .unwrap(), - socket, - addr, - ), - ), // the unwrap shouldn't panics, self has to be alive + .push(Client::new( + self.this + .borrow() + .upgrade() + .unwrap(), + socket, + addr, + )), // the unwrap shouldn't panics, self has to be alive Err(e) => eprintln!("Failed to accept connection: {e}"), }; } @@ -117,12 +113,7 @@ impl<'a> Client<'a> { } // TODO: use framed - async fn read( - &mut self, - ) -> Option<( - Vec<u8>, - usize, - )> { + async fn read(&mut self) -> Option<(Vec<u8>, usize)> { let mut len = vec![0; std::mem::size_of::<usize>()]; // vec! only take usize if !self.handle_read( self.stream @@ -130,18 +121,13 @@ impl<'a> Client<'a> { ) { return None; } - let len = usize::from_be_bytes( - match len.try_into() { - Ok(n) => n, - Err(e) => { - eprintln!( - "Failed to convert length bytes to length usize: {:?}", - e - ); - return None; - } - }, - ); // TODO: move to a shared fn with client to ensure we use same endian + let len = usize::from_be_bytes(match len.try_into() { + Ok(n) => n, + Err(e) => { + eprintln!("Failed to convert length bytes to length usize: {:?}", e); + return None; + } + }); // TODO: move to a shared fn with client to ensure we use same endian let mut buf = vec![0; len]; let read = self .stream @@ -150,11 +136,7 @@ impl<'a> Client<'a> { if !self.handle_read(read) { return None; } - Some( - ( - buf, len, - ), - ) + Some((buf, len)) } async fn poll(&mut self) -> ! { @@ -171,10 +153,7 @@ impl<'a> Client<'a> { .read() .await { - let req: Requests = match serde::decode_from_slice( - buf.as_slice(), - bincode::config::standard(), - ) { + let req: Requests = match serde::decode_from_slice(buf.as_slice(), bincode::config::standard()) { Ok((decoded, size)) => { if size != len { eprintln!("Decoded size {size} does not match expected size {len}, decode succeeded anyways?"); @@ -182,10 +161,7 @@ impl<'a> Client<'a> { decoded } Err(e) => { - eprintln!( - "Failed to decode request from client {}: {e}", - self.addr - ); + eprintln!("Failed to decode request from client {}: {e}", self.addr); continue; } }; @@ -196,25 +172,20 @@ impl<'a> Client<'a> { // Some(Request) should be send back to client fn handle_request(&self, req: Requests) -> Option<Request> { match req { - Requests::Send((prev, (name, args))) => Some( - Request::Post( - ( - name, - { - Executor::new( - (<remote_control_rs::tasks::server::Task<'_> as core::convert::TryFrom<_>>::try_from(name).unwrap()).as_ref(), - args.split_whitespace(), - ServerCtx { - stream: &self.stream, - }, - ) - .run() - .to_owned() + Requests::Send((prev, (name, args))) => Some(Request::Post( + (name, { + Executor::new( + (<remote_control_rs::tasks::server::Task<'_> as core::convert::TryFrom<_>>::try_from(name).unwrap()).as_ref(), + args.split_whitespace(), + ServerCtx { + stream: &self.stream, }, ) - .into(), - ), - ), + .run() + .to_owned() + }) + .into(), + )), _ => { panic!() } diff --git a/src/server/tasks.rs b/src/server/tasks.rs index c30d23a..88f3767 100644 --- a/src/server/tasks.rs +++ b/src/server/tasks.rs @@ -1,25 +1,12 @@ use remote_control_rs::tasks::{CompletedTask, server::Name}; use serde::Deserialize; -pub type Task = ( - Name, - String, -); +pub type Task = (Name, String); #[derive(Deserialize)] pub enum Requests { - Send( - ( - Vec<Requests>, - Task, - ), - ), - Respond( - ( - Vec<Requests>, - CompletedTask<Task>, - ), - ), + Send((Vec<Requests>, Task)), + Respond((Vec<Requests>, CompletedTask<Task>)), } #[derive(Deserialize)] |
