Added client connecting condition to network manager

This commit is contained in:
michael-bailey 2021-03-18 17:06:31 +00:00
parent 30d9e5ba2d
commit f3ab1f37da
2 changed files with 23 additions and 6 deletions

View File

@ -2,7 +2,6 @@
// pub mod client_v3;
pub mod traits;
use std::collections::HashMap;
use std::cmp::Ordering;
use std::net::TcpStream;
use std::sync::Mutex;

View File

@ -1,4 +1,4 @@
use crate::lib::server::Client;
use std::net::TcpListener;
use std::sync::Arc;
use std::io::BufReader;
@ -11,6 +11,7 @@ use crossbeam_channel::Sender;
use crate::lib::server::ServerMessages;
use crate::lib::Foundation::ICooperative;
use crate::lib::server::client_management::client::traits::IClient;
/// # NetworkSockIn
@ -40,7 +41,10 @@ pub struct NetworkManager {
}
impl NetworkManager {
pub fn new(port: String, server_channel: Sender<ServerMessages>) -> Arc<NetworkManager> {
pub fn new(
port: String,
server_channel: Sender<ServerMessages>
) -> Arc<NetworkManager> {
let mut address = "0.0.0.0:".to_string();
address.push_str(&port);
@ -68,7 +72,9 @@ impl ICooperative for NetworkManager {
let mut buffer = String::new();
// request is always sent on new connection
writer.write_all(serde_json::to_string(&NetworkSockOut::Request).unwrap().as_bytes()).unwrap_or_default();
writer.write_all(
serde_json::to_string(&NetworkSockOut::Request).unwrap().as_bytes()
).unwrap_or_default();
writer.write_all(b"\n").unwrap_or_default();
writer.flush().unwrap_or_default();
@ -83,13 +89,25 @@ impl ICooperative for NetworkManager {
NetworkSockIn::Info => {
writer.write_all(
serde_json::to_string(
&NetworkSockOut::GotInfo {server_name: "oof", server_owner: "michael"}
&NetworkSockOut::GotInfo {
server_name: "oof",
server_owner: "michael"
}
).unwrap().as_bytes()
).unwrap();
writer.flush().unwrap();
}
NetworkSockIn::Connect { uuid, username, address } => {
self.server_channel.send().unwrap_or_default()
let new_client = Client::new(
uuid,
username,
address,
stream.try_clone().unwrap(),
self.server_channel.clone()
);
self.server_channel.send(
ServerMessages::ClientConnected(new_client)
).unwrap_or_default();
}
}
}