From 0677a95b612a04bb8f79f02e3982429f1c5a10ff Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sat, 18 Jul 2020 15:04:45 +0100 Subject: [PATCH 01/17] fixed hashmap formatting --- src/server/server_profile.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index eda43da..5a3a2b0 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -71,7 +71,7 @@ impl<'server_lifetime> Server<'server_lifetime> { client.handle_connection(); }); - let params: HashMap = [(String::from("name"), username.clone()), (String::from("host"), address.clone()), (String::from("uuid"), uuid.clone())]; + let params: HashMap = [(String::from("name"), username.clone()), (String::from("host"), address.clone()), (String::from("uuid"), uuid.clone())].iter().cloned().collect(); let new_client = Commands::Client(Some(params)); self.update_all_clients(new_client); From 6df560c52555ecbe9b6b2384419644ef8e147b88 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sat, 18 Jul 2020 20:33:09 +0100 Subject: [PATCH 02/17] added temp lifetimes --- src/server/client/client_profile.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/server/client/client_profile.rs b/src/server/client/client_profile.rs index 2c4d869..10ee06b 100644 --- a/src/server/client/client_profile.rs +++ b/src/server/client/client_profile.rs @@ -15,19 +15,19 @@ use crossbeam::{channel, Sender, Receiver, TryRecvError}; use crossbeam_channel::unbounded; -pub struct Client<'client_lifetime>{ +pub struct Client<'a> { connected: bool, stream: Arc, uuid: String, username: String, address: String, - server: &'client_lifetime Server<'client_lifetime>, + server: &'a Server, tx_channel: Sender, rx_channel: Receiver, } impl<'a> Client<'a> { - pub fn new(server: &'a Server<'a>, stream: Arc, uuid: &String, username: &String, address: &String) -> Client<'a>{ + pub fn new(server: &'a Server, stream: Arc, uuid: &String, username: &String, address: &String) -> Self{ let (tx_channel, rx_channel): (Sender, Receiver) = unbounded(); Client { @@ -69,9 +69,6 @@ impl<'a> Client<'a> { while self.connected { match self.rx_channel.try_recv() { /*command is on the channel*/ - - - Ok(command) => { let a = command.clone(); match command { @@ -115,7 +112,8 @@ impl<'a> Client<'a> { let command = Commands::from(incoming_message.clone()); println!("Request: {}", &incoming_message); - + + /*command behaviour*/ match command { Commands::Connect(Some(params)) => todo!(), _ => todo!(), From 9d234b23930a14442ea1fd37259cc51fb6ece37b Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sat, 18 Jul 2020 20:36:20 +0100 Subject: [PATCH 03/17] soon to be deleted code --- src/server/commands/client_info.rs | 4 ++-- src/server/commands/client_update.rs | 4 ++-- src/server/commands/connect.rs | 3 ++- src/server/commands/disconnect.rs | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/server/commands/client_info.rs b/src/server/commands/client_info.rs index f851fb2..50b1a95 100644 --- a/src/server/commands/client_info.rs +++ b/src/server/commands/client_info.rs @@ -1,4 +1,4 @@ -use crate::server::client::client_profile::Client; +/*use crate::server::client::client_profile::Client; use std::sync::Mutex; use std::sync::Arc; @@ -26,4 +26,4 @@ pub fn get_client_data(clients_ref: &Arc>>, data: }, None => String::from("client not online"), } -} +}*/ diff --git a/src/server/commands/client_update.rs b/src/server/commands/client_update.rs index 6d6b66f..199054d 100644 --- a/src/server/commands/client_update.rs +++ b/src/server/commands/client_update.rs @@ -1,5 +1,5 @@ -use crate::server::client::client_profile::Client; +/*use crate::server::client::client_profile::Client; pub fn format_client_data(uuid: &String, client: &Client) -> String{ ["!client: username:",client.get_username(), " uuid:", uuid, " host:\"", client.get_address(), "\""].concat() -} +}*/ diff --git a/src/server/commands/connect.rs b/src/server/commands/connect.rs index 2d43f0c..ec4f1b7 100644 --- a/src/server/commands/connect.rs +++ b/src/server/commands/connect.rs @@ -1,4 +1,4 @@ -use crate::server::client::client_profile::Client; +/*use crate::server::client::client_profile::Client; use std::sync::Mutex; use std::sync::Arc; @@ -10,3 +10,4 @@ pub fn add_client(clients_ref: &Arc>>, client: &Cl let uuid = client.get_uuid().to_string(); //clients_hashmap.insert(uuid, client.clone()); } +*/ diff --git a/src/server/commands/disconnect.rs b/src/server/commands/disconnect.rs index efab3f8..d4ba8e4 100644 --- a/src/server/commands/disconnect.rs +++ b/src/server/commands/disconnect.rs @@ -1,4 +1,4 @@ -use crate::server::client::client_profile::Client; +/*use crate::server::client::client_profile::Client; use std::sync::Mutex; use std::sync::Arc; @@ -7,4 +7,4 @@ use std::collections::HashMap; pub fn remove_client(clients_ref: &Arc>>, client: &Client){ let mut clients_hashmap = clients_ref.lock().unwrap(); clients_hashmap.remove(client.get_uuid()).unwrap(); -} +}*/ From f4b9bdbb51b3f39455339150cdaa859b66571e75 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sat, 18 Jul 2020 20:36:59 +0100 Subject: [PATCH 04/17] changed self pointer to static --- src/server/server_profile.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index 5a3a2b0..8b4a17a 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -14,17 +14,17 @@ use dashmap::DashMap; use std::io::prelude::*; use regex::Regex; -pub struct Server<'server_lifetime> { +pub struct Server { name: String, address: String, author: String, - connected_clients: Arc>>>, + connected_clients: Arc>>>, thread_pool: ThreadPool, } // MARK: - server implemetation -impl<'server_lifetime> Server<'server_lifetime> { - pub fn new(name: &String, address: &String, author: &String) -> Server<'server_lifetime> { +impl Server { + pub fn new(name: &String, address: &String, author: &String) -> Server { Server{ name: name.to_string(), address: address.to_string(), @@ -38,7 +38,7 @@ impl<'server_lifetime> Server<'server_lifetime> { &self.address } - pub fn start(&'server_lifetime self) { + pub fn start(&'static self) { let listener = TcpListener::bind(self.get_address()).unwrap(); let mut buffer = [0; 1024]; @@ -65,7 +65,7 @@ impl<'server_lifetime> Server<'server_lifetime> { let mut clients_hashmap = self.connected_clients.lock().unwrap(); - clients_hashmap.insert(uuid.to_string(), &client); + clients_hashmap.insert(uuid.to_string(), client.get_transmitter().clone()); self.thread_pool.execute(move || { client.handle_connection(); @@ -105,8 +105,7 @@ impl<'server_lifetime> Server<'server_lifetime> { pub fn update_all_clients(&self, command: Commands){ let clients = self.connected_clients.lock().unwrap(); - for client in clients.values(){ - let tx = client.get_transmitter(); + for tx in clients.values(){ tx.send(command.clone()).unwrap(); } } From 7ed9e469fcc28d1eb484842bb54d8f45de092c11 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 17:55:10 +0100 Subject: [PATCH 05/17] changed String to 'static str The server details shouldnt be able to be change and should exist for the whole execution of the program, this can be changed by reverting back to the old format --- src/main.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index c5f4d1a..e9e84ad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,12 +7,19 @@ use std::net::{TcpStream, TcpListener}; use rust_chat_server::ThreadPool; use std::sync::{Arc, Barrier, Mutex}; use std::collections::HashMap; +use crate::server::commands::Commands; +use crossbeam_channel::Sender; fn main(){ + let server_name: &'static str = "Server-01"; + let server_address: &'static str = "0.0.0.0:6000"; + let server_author: &'static str = "noreply@email.com"; + /* let server_name = String::from("Server-01"); let server_address = String::from("0.0.0.0:6000"); let server_owner = String::from("noreply@email.com"); + */ - let server = Server::new(&server_name, &server_address, &server_owner); - server.start(); + let server = Server::new(server_name, server_address, server_author); + //server.start(); } From 73b732fbe0ece32b17c689a9636ea2a0aba12544 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 17:55:34 +0100 Subject: [PATCH 06/17] made Server static --- src/server/client/client_profile.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/client/client_profile.rs b/src/server/client/client_profile.rs index 10ee06b..3aa8ab6 100644 --- a/src/server/client/client_profile.rs +++ b/src/server/client/client_profile.rs @@ -21,13 +21,13 @@ pub struct Client<'a> { uuid: String, username: String, address: String, - server: &'a Server, + server: &'a Server<'a>, tx_channel: Sender, rx_channel: Receiver, } impl<'a> Client<'a> { - pub fn new(server: &'a Server, stream: Arc, uuid: &String, username: &String, address: &String) -> Self{ + pub fn new(server: &'a Server<'static>, stream: Arc, uuid: &String, username: &String, address: &String) -> Self{ let (tx_channel, rx_channel): (Sender, Receiver) = unbounded(); Client { @@ -83,7 +83,7 @@ impl<'a> Client<'a> { Commands::Client(Some(params)) => { self.transmit_data(a.to_string().as_str()); - let command = Commands::from(&buffer); + /*let command = Commands::from(&buffer); match command{ Commands::Success(None) => { println!("sucess confirmed"); @@ -93,6 +93,7 @@ impl<'a> Client<'a> { self.transmit_data(error.to_string().as_str()); }, } + */ }, Commands::Success(data) => {}, _ => {}, From 240f8fa6711e08c4ad10fe11379c435066806f17 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 17:55:54 +0100 Subject: [PATCH 07/17] made self static --- src/server/server_profile.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index 8b4a17a..87fdfe7 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -14,28 +14,28 @@ use dashmap::DashMap; use std::io::prelude::*; use regex::Regex; -pub struct Server { - name: String, - address: String, - author: String, +pub struct Server<'z> { + name: &'z str, + address: &'z str, + author: &'z str, connected_clients: Arc>>>, thread_pool: ThreadPool, } // MARK: - server implemetation -impl Server { - pub fn new(name: &String, address: &String, author: &String) -> Server { - Server{ - name: name.to_string(), - address: address.to_string(), - author: author.to_string(), +impl<'z> Server<'z> { + pub fn new(name: &'z str, address: &'z str, author: &'z str) -> Self { + Self { + name: name, + address: address, + author: author, connected_clients: Arc::new(Mutex::new(HashMap::new())), - thread_pool: ThreadPool::new(16) + thread_pool: ThreadPool::new(16), } } - pub fn get_address(&self) -> &String{ - &self.address + pub fn get_address(&self) -> String{ + self.address.to_string() } pub fn start(&'static self) { @@ -78,8 +78,8 @@ impl Server { }, Commands::Info(None) => { let mut params: HashMap = HashMap::new(); - params.insert(String::from("name"), self.name.clone()); - params.insert(String::from("owner"), self.author.clone()); + params.insert(String::from("name"), self.name.to_string().clone()); + params.insert(String::from("owner"), self.author.to_string().clone()); let command = Commands::Info(Some(params)); @@ -96,8 +96,8 @@ impl Server { pub fn get_info(&self, tx: Sender) { let mut params: HashMap = HashMap::new(); - params.insert(String::from("name"), self.name.clone()); - params.insert(String::from("owner"), self.author.clone()); + params.insert(String::from("name"), self.name.to_string().clone()); + params.insert(String::from("owner"), self.author.to_string().clone()); let command = Commands::Info(Some(params)); tx.send(command).unwrap(); From f7b827b15d03a08bcf0854c14a8957a536df5cd2 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 18:04:22 +0100 Subject: [PATCH 08/17] removed unused imports --- src/main.rs | 8 -------- src/server/client/client_profile.rs | 3 +-- src/server/commands/mod.rs | 9 +-------- src/server/server_profile.rs | 5 ++--- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/src/main.rs b/src/main.rs index e9e84ad..b17a7e5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,6 @@ mod server; // mod server_v2; - -use crate::server::client::client_profile::Client; use crate::server::server_profile::Server; -use std::net::{TcpStream, TcpListener}; -use rust_chat_server::ThreadPool; -use std::sync::{Arc, Barrier, Mutex}; -use std::collections::HashMap; -use crate::server::commands::Commands; -use crossbeam_channel::Sender; fn main(){ let server_name: &'static str = "Server-01"; diff --git a/src/server/client/client_profile.rs b/src/server/client/client_profile.rs index 3aa8ab6..aeb9b77 100644 --- a/src/server/client/client_profile.rs +++ b/src/server/client/client_profile.rs @@ -6,12 +6,11 @@ use crate::server::commands::{Commands}; use std::net::{Shutdown, TcpStream}; use std::sync::Arc; use parking_lot::FairMutex; -use std::collections::HashMap; use dashmap::DashMap; use std::io::prelude::*; use std::time::Duration; use regex::Regex; -use crossbeam::{channel, Sender, Receiver, TryRecvError}; +use crossbeam::{Sender, Receiver, TryRecvError}; use crossbeam_channel::unbounded; diff --git a/src/server/commands/mod.rs b/src/server/commands/mod.rs index 361d053..4393a9f 100644 --- a/src/server/commands/mod.rs +++ b/src/server/commands/mod.rs @@ -10,14 +10,7 @@ mod client; mod test; mod message; -use crate::server::client::client_profile::Client; -use crate::server::server_profile::Server; - use std::string::ToString; - -use parking_lot::FairMutex; -use std::sync::Mutex; -use std::sync::Arc; use std::collections::HashMap; use dashmap::DashMap; use std::borrow::Borrow; @@ -229,4 +222,4 @@ mod test_commands_v2 { println!("{:?}", command.to_string()) } -} \ No newline at end of file +} diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index 87fdfe7..f853c41 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -4,10 +4,9 @@ use crate::server::client::client_profile::Client; use crate::server::commands::{Commands}; use rust_chat_server::ThreadPool; -use std::collections::VecDeque; use std::net::{TcpStream, TcpListener}; -use std::sync::{Arc, Barrier, Mutex }; -use crossbeam_channel::{unbounded, Sender, Receiver}; +use std::sync::{Arc, Mutex}; +use crossbeam_channel::Sender; use parking_lot::FairMutex; use std::collections::HashMap; use dashmap::DashMap; From 0e6d141704d548523011d49e9d34fa3a30ec1a01 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 21:04:41 +0100 Subject: [PATCH 09/17] added new crate for statics --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 485e864..dbac325 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ crossbeam-utils = "0.7" crossbeam-queue = "0.2" dashmap = "3.11.4" async-std = "1.6.2" +lazy_static = "1.4.0" [profile.dev] opt-level = 0 From 700c093c6bc0681998d14b38bd92d9798d79cb54 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 21:05:09 +0100 Subject: [PATCH 10/17] made server and details statics/consts --- src/main.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index b17a7e5..1f86a00 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,23 @@ +#[macro_use] +extern crate lazy_static; + mod server; -// mod server_v2; + use crate::server::server_profile::Server; -fn main(){ - let server_name: &'static str = "Server-01"; - let server_address: &'static str = "0.0.0.0:6000"; - let server_author: &'static str = "noreply@email.com"; +fn main(){ + lazy_static!{ + static ref server_name: &'static str = "Server-01"; + static ref server_address: &'static str = "0.0.0.0:6000"; + static ref server_author: &'static str = "noreply@email.com"; + static ref SERVER: Server<'static> = Server::new(&server_name, &server_address, &server_author); + } /* let server_name = String::from("Server-01"); let server_address = String::from("0.0.0.0:6000"); - let server_owner = String::from("noreply@email.com"); + let server_author = String::from("noreply@email.com"); */ - let server = Server::new(server_name, server_address, server_author); - //server.start(); + //let server = Server::new(server_name, server_address, server_author); + SERVER.start(); } From 2827ab5c5e454d0c400ce2e51519026a8a3af5fb Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Sun, 19 Jul 2020 21:07:23 +0100 Subject: [PATCH 11/17] constructor now returns Self changed the return of the constructor from type Server to type Self --- src/server/server_profile.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index f853c41..c734198 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -32,7 +32,7 @@ impl<'z> Server<'z> { thread_pool: ThreadPool::new(16), } } - + pub fn get_address(&self) -> String{ self.address.to_string() } From f399386906aa9e71ed83afbdd7974fe9ec69baff Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Mon, 20 Jul 2020 18:21:22 +0100 Subject: [PATCH 12/17] added note on transmit data bug refers to a server crash issue --- src/server/server_profile.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index c734198..21889bc 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -66,9 +66,9 @@ impl<'z> Server<'z> { clients_hashmap.insert(uuid.to_string(), client.get_transmitter().clone()); - self.thread_pool.execute(move || { + /*self.thread_pool.execute(move || { client.handle_connection(); - }); + });*/ let params: HashMap = [(String::from("name"), username.clone()), (String::from("host"), address.clone()), (String::from("uuid"), uuid.clone())].iter().cloned().collect(); let new_client = Commands::Client(Some(params)); @@ -113,6 +113,11 @@ impl<'z> Server<'z> { println!("Transmitting..."); println!("data: {}",data); + /* + * This will throw an error and crash any thread, including the main thread, if + * the connection is lost before transmitting. Maybe change to handle any exceptions + * that may occur. + */ stream.write(data.to_string().as_bytes()).unwrap(); stream.flush().unwrap(); } From ac9a337f351fb98a280f955fafa1e9550e9142bc Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Mon, 20 Jul 2020 19:40:16 +0100 Subject: [PATCH 13/17] commented unused and misplaced line --- src/server/server_profile.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index 21889bc..88567a4 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -46,8 +46,9 @@ impl<'z> Server<'z> { println!("Server: new connection, {}", addr); let request = Commands::Request(None); - request.to_string(); - self.transmit_data(&stream, &*request.to_string().as_str()); + //request.to_string(); + self.transmit_data(&stream, &request.to_string().as_str()); + stream.read(&mut buffer).unwrap(); From 21cb46e4fb73f28ae8a133b23d507dad86de506c Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Mon, 20 Jul 2020 19:40:54 +0100 Subject: [PATCH 14/17] added Request command to 'to_string' conversion --- src/server/commands/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/commands/mod.rs b/src/server/commands/mod.rs index 4393a9f..d836339 100644 --- a/src/server/commands/mod.rs +++ b/src/server/commands/mod.rs @@ -129,6 +129,7 @@ impl ToString for Commands { let mut out_string = String::new(); let (command, parameters) = match self { + Commands::Request(arguments) => { ("!request:", arguments) }, Commands::Info(arguments) => { ("!info:", arguments) }, Commands::Connect(arguments) => { ("!connect:", arguments) }, Commands::Disconnect(arguments) => { ("!disconnect:", arguments) }, From 52e97bbaadf2f0ce93ad6c19623a82e6ef2f448b Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Mon, 20 Jul 2020 19:58:41 +0100 Subject: [PATCH 15/17] added manual unlock of client hashmap --- src/server/server_profile.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index 88567a4..95c3f89 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -49,7 +49,6 @@ impl<'z> Server<'z> { //request.to_string(); self.transmit_data(&stream, &request.to_string().as_str()); - stream.read(&mut buffer).unwrap(); let incoming_message = String::from(String::from_utf8_lossy(&buffer)); @@ -64,9 +63,9 @@ impl<'z> Server<'z> { let mut client = Client::new(self, stream, &uuid, &username, &address); let mut clients_hashmap = self.connected_clients.lock().unwrap(); - clients_hashmap.insert(uuid.to_string(), client.get_transmitter().clone()); - + std::mem::drop(clients_hashmap); + /*self.thread_pool.execute(move || { client.handle_connection(); });*/ @@ -90,7 +89,7 @@ impl<'z> Server<'z> { self.transmit_data(&stream, Commands::Error(None).to_string().as_str()); }, } - } + } } } From cfe48835ac3abed3002d64e078674826c996f3d5 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Mon, 20 Jul 2020 20:05:22 +0100 Subject: [PATCH 16/17] added back client thread pool --- src/server/server_profile.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/server_profile.rs b/src/server/server_profile.rs index 95c3f89..0446524 100644 --- a/src/server/server_profile.rs +++ b/src/server/server_profile.rs @@ -66,9 +66,9 @@ impl<'z> Server<'z> { clients_hashmap.insert(uuid.to_string(), client.get_transmitter().clone()); std::mem::drop(clients_hashmap); - /*self.thread_pool.execute(move || { + self.thread_pool.execute(move || { client.handle_connection(); - });*/ + }); let params: HashMap = [(String::from("name"), username.clone()), (String::from("host"), address.clone()), (String::from("uuid"), uuid.clone())].iter().cloned().collect(); let new_client = Commands::Client(Some(params)); From 9dff749432aa6dd6f51e0ed7cd93ab35aeae6d87 Mon Sep 17 00:00:00 2001 From: Mitch161 Date: Mon, 20 Jul 2020 20:08:51 +0100 Subject: [PATCH 17/17] added Client command for 'to_string' conversion no longer returns !error: back to the user when the client command needs to be returned from the server --- src/server/commands/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/commands/mod.rs b/src/server/commands/mod.rs index d836339..c40744b 100644 --- a/src/server/commands/mod.rs +++ b/src/server/commands/mod.rs @@ -135,6 +135,7 @@ impl ToString for Commands { Commands::Disconnect(arguments) => { ("!disconnect:", arguments) }, Commands::ClientUpdate(arguments) => { ("!clientUpdate:", arguments) }, Commands::ClientInfo(arguments) => { ("!clientInfo:", arguments) }, + Commands::Client(arguments) => { ("!client:", arguments) }, Commands::Error(arguments) => { ("!error:", arguments) }, _ => { ("!error:", &None) } };