diff --git a/server/src/network/network_manager/network_manager.rs b/server/src/network/network_manager/network_manager.rs index 9e38316..a18abcc 100644 --- a/server/src/network/network_manager/network_manager.rs +++ b/server/src/network/network_manager/network_manager.rs @@ -1,14 +1,26 @@ -use actix::{Actor, Addr, AsyncContext, Context, Handler, WeakRecipient}; -use foundation::ClientDetails; -use crate::network::{Connection, ConnectionInitiator, InitiatorOutput, NetworkDataMessage, NetworkDataOutput}; -use crate::network::listener::{ListenerMessage, ListenerOutput}; +use crate::config_manager::ConfigManager; use crate::network::listener::NetworkListener; -use crate::network::network_manager::Builder; +use crate::network::listener::{ListenerMessage, ListenerOutput}; use crate::network::network_manager::config::Config; -use crate::network::network_manager::messages::{NetworkMessage, NetworkOutput}; +use crate::network::network_manager::messages::{ + NetworkMessage, NetworkOutput, +}; +use crate::network::network_manager::Builder; +use crate::network::{ + Connection, ConnectionInitiator, InitiatorOutput, NetworkDataMessage, + NetworkDataOutput, +}; +use actix::{ + Actor, Addr, AsyncContext, Context, Handler, WeakAddr, WeakRecipient, +}; +use foundation::ClientDetails; +/// # NetworkManager +/// this struct will handle all networking functionality. +/// pub struct NetworkManager { config: Config, + config_manager: WeakAddr, listener_addr: Option>, delegate: WeakRecipient, initiators: Vec>, @@ -17,14 +29,13 @@ pub struct NetworkManager { impl NetworkManager { pub fn new(delegate: WeakRecipient) -> Addr { NetworkManager { - config: Config { - port: 5600 - }, + config: Config { port: 5600 }, listener_addr: None, delegate, initiators: Vec::new(), + config_manager: ConfigManager::shared().downgrade(), } - .start() + .start() } pub fn create(delegate: WeakRecipient) -> Builder { @@ -115,8 +126,10 @@ impl Actor for NetworkManager { fn started(&mut self, ctx: &mut Self::Context) { println!("[NetworkManager] started with config {:?}", self.config); let recipient = ctx.address().recipient(); - self.listener_addr - .replace(NetworkListener::new(format!("0.0.0.0:{}", self.config.port), recipient)); + self.listener_addr.replace(NetworkListener::new( + format!("0.0.0.0:{}", self.config.port), + recipient, + )); } } @@ -138,9 +151,15 @@ impl Handler for NetworkManager { impl Handler for NetworkManager { type Result = NetworkDataOutput; - fn handle(&mut self, msg: NetworkDataMessage, ctx: &mut Self::Context) -> Self::Result { + fn handle( + &mut self, + msg: NetworkDataMessage, + ctx: &mut Self::Context, + ) -> Self::Result { match msg { - NetworkDataMessage::IsListening => NetworkDataOutput::IsListening(self.listener_addr.is_some()) + NetworkDataMessage::IsListening => { + NetworkDataOutput::IsListening(self.listener_addr.is_some()) + } } } } @@ -185,7 +204,8 @@ impl From for NetworkManager { listener_addr: None, delegate: builder.delegate, - initiators: Vec::default() + initiators: Vec::default(), + config_manager: ConfigManager::shared().downgrade(), } } -} \ No newline at end of file +}