added config manager to network manager

This commit is contained in:
michael-bailey 2022-09-07 16:11:57 +01:00
parent bed482d787
commit db5fd82e1a
1 changed files with 36 additions and 16 deletions

View File

@ -1,14 +1,26 @@
use actix::{Actor, Addr, AsyncContext, Context, Handler, WeakRecipient}; use crate::config_manager::ConfigManager;
use foundation::ClientDetails;
use crate::network::{Connection, ConnectionInitiator, InitiatorOutput, NetworkDataMessage, NetworkDataOutput};
use crate::network::listener::{ListenerMessage, ListenerOutput};
use crate::network::listener::NetworkListener; 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::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 { pub struct NetworkManager {
config: Config, config: Config,
config_manager: WeakAddr<ConfigManager>,
listener_addr: Option<Addr<NetworkListener>>, listener_addr: Option<Addr<NetworkListener>>,
delegate: WeakRecipient<NetworkOutput>, delegate: WeakRecipient<NetworkOutput>,
initiators: Vec<Addr<ConnectionInitiator>>, initiators: Vec<Addr<ConnectionInitiator>>,
@ -17,14 +29,13 @@ pub struct NetworkManager {
impl NetworkManager { impl NetworkManager {
pub fn new(delegate: WeakRecipient<NetworkOutput>) -> Addr<NetworkManager> { pub fn new(delegate: WeakRecipient<NetworkOutput>) -> Addr<NetworkManager> {
NetworkManager { NetworkManager {
config: Config { config: Config { port: 5600 },
port: 5600
},
listener_addr: None, listener_addr: None,
delegate, delegate,
initiators: Vec::new(), initiators: Vec::new(),
config_manager: ConfigManager::shared().downgrade(),
} }
.start() .start()
} }
pub fn create(delegate: WeakRecipient<NetworkOutput>) -> Builder { pub fn create(delegate: WeakRecipient<NetworkOutput>) -> Builder {
@ -115,8 +126,10 @@ impl Actor for NetworkManager {
fn started(&mut self, ctx: &mut Self::Context) { fn started(&mut self, ctx: &mut Self::Context) {
println!("[NetworkManager] started with config {:?}", self.config); println!("[NetworkManager] started with config {:?}", self.config);
let recipient = ctx.address().recipient(); let recipient = ctx.address().recipient();
self.listener_addr self.listener_addr.replace(NetworkListener::new(
.replace(NetworkListener::new(format!("0.0.0.0:{}", self.config.port), recipient)); format!("0.0.0.0:{}", self.config.port),
recipient,
));
} }
} }
@ -138,9 +151,15 @@ impl Handler<NetworkMessage> for NetworkManager {
impl Handler<NetworkDataMessage> for NetworkManager { impl Handler<NetworkDataMessage> for NetworkManager {
type Result = NetworkDataOutput; 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 { 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<Builder> for NetworkManager {
listener_addr: None, listener_addr: None,
delegate: builder.delegate, delegate: builder.delegate,
initiators: Vec::default() initiators: Vec::default(),
config_manager: ConfigManager::shared().downgrade(),
} }
} }
} }