diff --git a/src/lib/server/mod.rs b/src/lib/server/mod.rs index 12bddf2..a6950c5 100644 --- a/src/lib/server/mod.rs +++ b/src/lib/server/mod.rs @@ -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, + network_manager: Arc, sender: Sender, receiver: Receiver, @@ -40,6 +43,8 @@ impl Server { Arc::new(Server { server_socket: listener, client_manager: ClientManager::new(sender.clone()), + + network_manager: NetworkManager::new("5600".to_string(), sender.clone()), sender, receiver, diff --git a/src/lib/server/network_manager/mod.rs b/src/lib/server/network_manager/mod.rs new file mode 100644 index 0000000..a5aa7ec --- /dev/null +++ b/src/lib/server/network_manager/mod.rs @@ -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, +} + +impl NetworkManager { + pub fn new(port: String, server_channel: Sender) -> Arc { + 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") + } +} \ No newline at end of file