added config manager to network manager
This commit is contained in:
parent
bed482d787
commit
db5fd82e1a
|
|
@ -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(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue