diff options
| author | Fuwn <[email protected]> | 2021-05-06 00:31:08 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-05-06 00:31:08 +0000 |
| commit | b3ee830a430e00dc8ab8f7a10ebaf1e7c931a0ad (patch) | |
| tree | fe6f5457049d0744d21cd142571662787f71eb6f /src/server/server.rs | |
| parent | perf(subs): clippy (diff) | |
| download | whirl-b3ee830a430e00dc8ab8f7a10ebaf1e7c931a0ad.tar.xz whirl-b3ee830a430e00dc8ab8f7a10ebaf1e7c931a0ad.zip | |
refactor(server): clippy: module inception
Diffstat (limited to 'src/server/server.rs')
| -rw-r--r-- | src/server/server.rs | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/src/server/server.rs b/src/server/server.rs deleted file mode 100644 index 1be6faa..0000000 --- a/src/server/server.rs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective -// SPDX-License-Identifier: GPL-3.0-only - -use std::{error::Error, fmt, net::SocketAddr, sync::Arc}; - -use tokio::{ - net::{TcpListener, TcpStream}, - sync::Mutex, -}; - -use crate::server::interaction::shared::Shared; - -#[derive(Debug)] -pub enum ServerType { - AnonRoomServer, - AnonUserServer, - AutoServer, - RoomServer, - UserServer, -} -// https://stackoverflow.com/a/32712140/14452787 -impl fmt::Display for ServerType { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{:?}", self) } -} - -#[async_trait::async_trait] -pub trait Server { - async fn listen(address: &str, server_type: ServerType) -> Result<(), Box<dyn Error>> { - let listener = TcpListener::bind(address).await?; - let state = Arc::new(Mutex::new(Shared::new())); - let mut counter = 0; - - info!( - "server of type {} now listening at {}", - server_type.to_string(), - address - ); - - loop { - let (stream, address) = listener.accept().await?; - counter += 1; - let state = Arc::clone(&state); - - trace!("accepted client at {}", address); - - tokio::spawn(async move { - if let Err(e) = Self::handle(state, stream, address, counter).await { - error!("an error occurred: {}", e); - } - }); - } - } - - async fn handle( - state: Arc<Mutex<Shared>>, - stream: TcpStream, - _address: SocketAddr, - count: usize, - ) -> Result<(), Box<dyn Error>>; -} |