added basic network manager implementation

This commit is contained in:
michael-bailey 2021-03-18 10:36:18 +00:00
parent 042f7e1007
commit 965231cde9
2 changed files with 52 additions and 1 deletions

View File

@ -1,12 +1,14 @@
pub mod client_management;
pub mod network_manager;
use crate::lib::server::network_manager::NetworkManager;
use std::collections::HashMap;
use std::net::TcpListener;
use std::sync::Arc;
use std::io::Write;
use std::io::Read;
use uuid::Uuid;
use crossbeam_channel::{Sender, Receiver, unbounded};
@ -27,6 +29,7 @@ pub enum ServerMessages {
pub struct Server {
server_socket: TcpListener,
client_manager: Arc<ClientManager>,
network_manager: Arc<NetworkManager>,
sender: Sender<ServerMessages>,
receiver: Receiver<ServerMessages>,
@ -41,6 +44,8 @@ impl Server {
server_socket: listener,
client_manager: ClientManager::new(sender.clone()),
network_manager: NetworkManager::new("5600".to_string(), sender.clone()),
sender,
receiver,
})

View File

@ -0,0 +1,46 @@
use std::sync::Arc;
use crate::lib::server::ServerMessages;
use std::net::TcpListener;
use serde::{Deserialize, Serialize};
use crossbeam_channel::Sender;
use crate::lib::Foundation::ICooperative;
#[derive(Serialize, Deserialize)]
enum NetworkSocketMesssages {
Info {id: String},
Connect {id: String, uuid: String, username: String, address: String},
}
pub enum NetworkMessages {
}
pub struct NetworkManager {
listener: TcpListener,
server_channel: Sender<ServerMessages>,
}
impl 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);
let listener = TcpListener::bind(address)
.expect("Could not bind to address");
Arc::new(NetworkManager {
listener,
server_channel,
})
}
}
impl ICooperative for NetworkManager {
fn tick(&self) {
println!("network manager tick")
}
}