fixed trait issues

This commit is contained in:
michael-bailey 2020-07-17 19:51:54 +01:00
parent bfd0ee00a8
commit 812986fa32
3 changed files with 19 additions and 18 deletions

4
.gitignore vendored
View File

@ -9,4 +9,6 @@ Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk
.DS_Store
.idea
.idea
*.properties

View File

@ -5,15 +5,16 @@ use crate::server::commands::{Commands};
use std::net::{Shutdown, TcpStream};
use std::sync::Arc;
use crossbeam_channel::{Receiver, TryRecvError, unbounded, Sender};
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_channel::unbounded;
#[derive(Clone)]
pub struct Client<'client_lifetime>{
connected: bool,
stream: Arc<TcpStream>,
@ -31,13 +32,13 @@ impl<'a> Client<'a> {
Client {
connected: true,
stream: stream,
stream,
uuid: uuid.to_string(),
username: username.to_string(),
address: address.to_string(),
server: server,
tx_channel: tx_channel,
rx_channel: rx_channel,
server,
tx_channel,
rx_channel,
}
}

View File

@ -6,7 +6,7 @@ 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 std::sync::{Arc, Barrier, Mutex };
use crossbeam_channel::{unbounded, Sender, Receiver};
use parking_lot::FairMutex;
use std::collections::HashMap;
@ -18,7 +18,7 @@ pub struct Server<'server_lifetime> {
name: String,
address: String,
author: String,
connected_clients: Arc<Mutex<HashMap<String,Client<'server_lifetime>>>>,
connected_clients: Arc<Mutex<HashMap<String,&'server_lifetime Client<'server_lifetime>>>>,
thread_pool: ThreadPool,
}
@ -42,14 +42,13 @@ impl<'server_lifetime> Server<'server_lifetime> {
let listener = TcpListener::bind(self.get_address()).unwrap();
let mut buffer = [0; 1024];
//stream.set_read_timeout(Some(Duration::from_millis(3000))).unwrap();
loop {
if let Ok((mut stream, addr)) = listener.accept() {
println!("Connected: {}", addr);
println!("Server: new connection, {}", addr);
let request = Commands::Request(None);
request.to_string();
self.transmit_data(&stream, "");
self.transmit_data(&stream, &*request.to_string().as_str());
stream.read(&mut buffer).unwrap();
@ -63,15 +62,14 @@ impl<'server_lifetime> Server<'server_lifetime> {
let stream = Arc::new(stream);
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);
self.thread_pool.execute(move || {
client.handle_connection();
});
*/
let mut clients_hashmap = self.connected_clients.lock().unwrap();
clients_hashmap.insert(uuid.to_string(), client.clone());
},
Commands::Info(None) => {
let mut params: HashMap<String, String> = HashMap::new();