diff --git a/src/lib/server/client_management/client/mod.rs b/src/lib/server/client_management/client/mod.rs index e4f98fa..68c21ef 100644 --- a/src/lib/server/client_management/client/mod.rs +++ b/src/lib/server/client_management/client/mod.rs @@ -5,16 +5,29 @@ pub mod traits; use serde::{Serialize, Deserialize}; use std::net::TcpStream; use std::sync::Weak; +use std::sync::Arc; use uuid::Uuid; use super::traits::TClientManager; use super::ClientManager; +use traits::TClient; + pub enum ClientMessage { a, b, } +/// # Client +/// This struct represents a connected user. +/// +/// ## Attrubutes +/// - uuid: The id of the connected user. +/// - username: The username of the connected user. +/// - address: The the address of the connected client. +/// +/// - stream: The socket for the connected client. +/// - owner: An optional reference to the owning object. #[derive(Serialize, Deserialize)] pub struct Client { uuid: String, @@ -28,3 +41,14 @@ pub struct Client { owner: Option> } +impl TClient for Client { + fn new(uuid: Uuid, name: String, addr: String) -> Arc { todo!() } + + fn send(&self, bytes: Vec) -> Result<(), &str> { todo!() } + fn recv(&self) -> Option> { todo!() } + + fn send_msg(&self, msg: ClientMessage) -> Result<(), &str> { todo!() } + fn recv_msg(&self) -> Option { todo!() } + + fn tick(&self) { } +} \ No newline at end of file diff --git a/src/lib/server/client_management/client/traits.rs b/src/lib/server/client_management/client/traits.rs index 31953d6..9129eb6 100644 --- a/src/lib/server/client_management/client/traits.rs +++ b/src/lib/server/client_management/client/traits.rs @@ -1,13 +1,25 @@ +use std::sync::Arc; + use uuid::Uuid; +/// # TClient +/// This trait represents the methods that a client must implement +/// in order to be used with a client manager +/// +/// # Methods +/// - new: creates a new client from an id, username and a address. +/// - send: send a message to the client. +/// - recv: if there is a message in the queue, returns the message +/// - send_msg: sends a event message to the client +/// - recv_msg: used by the client to receive and process event messages pub trait TClient { - fn new(uuid: Uuid, name: String, addr: String); + fn new(uuid: Uuid, name: String, addr: String) -> Arc; fn send(&self, bytes: Vec) -> Result<(), &str>; fn recv(&self) -> Option>; - fn sendMsg(&self, msg: TClientMessage) -> Result<(), &str>; - fn recvMsg(&self) -> Option; + fn send_msg(&self, msg: TClientMessage) -> Result<(), &str>; + fn recv_msg(&self) -> Option; fn tick(&self); } \ No newline at end of file diff --git a/src/lib/server/client_management/traits.rs b/src/lib/server/client_management/traits.rs index 70f9a5e..e1a733e 100644 --- a/src/lib/server/client_management/traits.rs +++ b/src/lib/server/client_management/traits.rs @@ -4,6 +4,9 @@ use uuid::Uuid; use super::client::traits; +/** + * @michael-bailey + */ pub trait TClientManager { fn addClient(&self, client: Arc); fn removeClient(&self, id: Uuid); diff --git a/src/lib/server/mod.rs b/src/lib/server/mod.rs index 0de742b..2d1cca4 100644 --- a/src/lib/server/mod.rs +++ b/src/lib/server/mod.rs @@ -1,5 +1,5 @@ pub mod client_management; -pub mod server; -pub mod server_v3; +// pub mod server; +// pub mod server_v3; pub struct Server {}