added basic network manager implementation
This commit is contained in:
parent
042f7e1007
commit
965231cde9
|
|
@ -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>,
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue