summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-09-21 15:47:40 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-09-21 15:47:40 +0800
commit72daf64b904fc48505592a5469ecf64a18d570a4 (patch)
tree73a883ce58fa9fcc49502f7b93c91758c82380f1 /src
parent867f8ecd572d7ae66967017eb78745df86290e8d (diff)
call tcpserver
Diffstat (limited to 'src')
-rw-r--r--src/server/main.rs6
-rw-r--r--src/server/servers.rs2
-rw-r--r--src/server/servers/tcpserver.rs8
3 files changed, 10 insertions, 6 deletions
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<Weak<Self>>,
task: Option<Task>,
listener: TcpListener,
@@ -25,7 +25,7 @@ struct TCPServer<'a> {
}
impl<'a> TCPServer<'a> {
- fn new(listener: TcpListener) -> Arc<Self> {
+ 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()) });
*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<TCPServer<'a>>,
stream: TcpStream,
addr: SocketAddr,