From 72daf64b904fc48505592a5469ecf64a18d570a4 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 21 Sep 2025 15:47:40 +0800 Subject: call tcpserver --- src/server/main.rs | 6 +++++- src/server/servers.rs | 2 +- src/server/servers/tcpserver.rs | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/main.rs b/src/server/main.rs index 91a69b8..5cd3779 100644 --- a/src/server/main.rs +++ b/src/server/main.rs @@ -1,7 +1,11 @@ +use tokio::net::TcpListener; + +use crate::servers::{Server, tcpserver::TCPServer}; + pub(crate) mod servers; pub(crate) mod tasks; #[tokio::main] async fn main() { - todo!(); + TCPServer::new(TcpListener::bind("0.0.0.0").await.unwrap()).listen().await; } diff --git a/src/server/servers.rs b/src/server/servers.rs index 238fb46..39e246b 100644 --- a/src/server/servers.rs +++ b/src/server/servers.rs @@ -5,5 +5,5 @@ pub mod tcpserver; pub trait Server<'a> { fn update(&mut self, task: Task); - async fn listen(&mut self) -> !; + async fn listen(&self) -> !; } diff --git a/src/server/servers/tcpserver.rs b/src/server/servers/tcpserver.rs index 4dcf25c..922c23e 100644 --- a/src/server/servers/tcpserver.rs +++ b/src/server/servers/tcpserver.rs @@ -17,7 +17,7 @@ use crate::{ use bincode::serde; -struct TCPServer<'a> { +pub struct TCPServer<'a> { this: RefCell>, task: Option, listener: TcpListener, @@ -25,7 +25,7 @@ struct TCPServer<'a> { } impl<'a> TCPServer<'a> { - fn new(listener: TcpListener) -> Arc { + pub fn new(listener: TcpListener) -> Arc { 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 @@ -41,7 +41,7 @@ impl<'a> Server<'a> for TCPServer<'a> { self.task = Some(task); } - async fn listen(&mut self) -> ! { + async fn listen(&self) -> ! { loop { match self.listener.accept().await { 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 @@ -51,7 +51,7 @@ impl<'a> Server<'a> for TCPServer<'a> { } } -pub struct Client<'a> { +struct Client<'a> { server: Arc>, stream: TcpStream, addr: SocketAddr, -- cgit v1.2.3