diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 8c77122..085ad3c 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -5,6 +5,7 @@ mod id; use self::{disconnect::Disconnect, help::Help, id::ID}; use crate::plugins::prelude::*; +/// Register default commands pub fn register_commands() -> Vec> { vec![Box::new(Help), Box::new(Disconnect), Box::new(ID)] } diff --git a/src/lib.rs b/src/lib.rs index 5af8247..9113dbf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,13 +2,15 @@ use std::{collections::HashMap, sync::Mutex}; use lazy_static::lazy_static; -use crate::tcp::Client; +use crate::server::Client; pub mod commands; pub mod plugins; -pub mod tcp; +pub mod server; lazy_static! { + /// List with all connected clients pub static ref CLIENTS: Mutex> = Mutex::new(HashMap::new()); + /// Next ID of the client to be add to [CLIENTS] pub static ref CLIENT_NEXT: Mutex = Mutex::new(0); } diff --git a/src/main.rs b/src/main.rs index dac552e..3f7a835 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use clap::Parser; -use servers::tcp::server; +use servers::server; #[derive(Debug, Parser)] #[clap( diff --git a/src/plugins/mod.rs b/src/plugins/mod.rs index e19b0c1..1cbb1b9 100644 --- a/src/plugins/mod.rs +++ b/src/plugins/mod.rs @@ -12,5 +12,5 @@ pub mod prelude { pub use async_trait::async_trait; pub use self::types::*; - pub use crate::tcp::Client; + pub use crate::server::Client; } diff --git a/src/plugins/types.rs b/src/plugins/types.rs index 783a68e..d9a094f 100644 --- a/src/plugins/types.rs +++ b/src/plugins/types.rs @@ -2,7 +2,7 @@ use std::any::Any; use async_trait::async_trait; -use crate::{plugins::manager::PluginsManager, tcp::Client}; +use crate::{plugins::manager::PluginsManager, server::Client}; // A main plugin trait. #[async_trait] diff --git a/src/tcp/client.rs b/src/server/client.rs similarity index 95% rename from src/tcp/client.rs rename to src/server/client.rs index b0efbda..e784e7c 100644 --- a/src/tcp/client.rs +++ b/src/server/client.rs @@ -14,14 +14,20 @@ use crate::plugins::manager::PluginsManagerType; /// Max length of a TCP and UDP packet pub const MAX_PACKET_LEN: usize = 65536; +/// Client struct #[derive(Debug, Clone)] pub struct Client { + /// ID of the client pub id: usize, + /// Connection stream of the client pub stream: ClientStream, + /// Custom Client Map pub map: HashMap, + /// Plugins Manager pub plugins_manager: PluginsManagerType, } +/// Value type of the client map entry #[derive(Debug, Clone)] pub enum ClientMapValue { /// String type @@ -165,7 +171,7 @@ impl Client { Ok(()) } - /// Close the connection + /// Close the client connection pub fn close(&self) -> anyhow::Result<()> { match &self.stream { ClientStream::TCP(stream) => stream.shutdown(Shutdown::Both)?, diff --git a/src/tcp/mod.rs b/src/server/mod.rs similarity index 50% rename from src/tcp/mod.rs rename to src/server/mod.rs index 6db2673..24bf375 100644 --- a/src/tcp/mod.rs +++ b/src/server/mod.rs @@ -1,4 +1,5 @@ mod client; -pub mod server; +mod server; pub use client::*; +pub use server::*; diff --git a/src/tcp/server.rs b/src/server/server.rs similarity index 96% rename from src/tcp/server.rs rename to src/server/server.rs index 0c61570..7d861e4 100644 --- a/src/tcp/server.rs +++ b/src/server/server.rs @@ -7,18 +7,19 @@ use tracing::{error, info}; use crate::{ plugins::{self, manager::PluginsManagerType}, - tcp::Client, + server::Client, CLIENTS, CLIENT_NEXT, }; pub const PLUGINS_DIR: &str = "plugins"; lazy_static! { + /// Plugin manager, where you can find loaded plugins, commands and events pub static ref PLUGINS_MANAGER: PluginsManagerType = plugins::loader(PLUGINS_DIR).expect("failed to load plugins"); } -/// Start server +/// Start servers pub fn run(tcp_host: String, ws_host: String) -> anyhow::Result<()> { info!("Loaded {} plugins", PLUGINS_MANAGER.plugins.len()); info!("Loaded {} commands", PLUGINS_MANAGER.commands.len());