init
This commit is contained in:
@@ -3,8 +3,10 @@ use tokio::sync::mpsc;
|
||||
use tokio::time::interval;
|
||||
use crate::domain::client::ClientManager;
|
||||
use crate::domain::event::{Event, EventBus};
|
||||
use crate::network::http::HttpServer;
|
||||
use crate::network::udp::UdpServer;
|
||||
use crate::runtime::dispatcher::Dispatcher;
|
||||
use crate::store::store_service::StoreService;
|
||||
|
||||
pub struct App {
|
||||
// Communication inter-components
|
||||
@@ -14,19 +16,26 @@ pub struct App {
|
||||
|
||||
// Network
|
||||
udp_server: UdpServer,
|
||||
http_server: HttpServer,
|
||||
|
||||
// Clients
|
||||
client_manager: ClientManager,
|
||||
|
||||
// store
|
||||
store: StoreService,
|
||||
}
|
||||
|
||||
impl App {
|
||||
pub async fn new() -> Self {
|
||||
let (event_bus, event_rx) = EventBus::new();
|
||||
|
||||
let store = StoreService::new("./db.sqlite").await.unwrap();
|
||||
|
||||
let udp_server = UdpServer::new(event_bus.clone(), "0.0.0.0:5000").await;
|
||||
let http_server = HttpServer::new(event_bus.clone(), store.clone());
|
||||
let client_manager = ClientManager::new();
|
||||
let dispatcher = Dispatcher::new(event_bus.clone(), udp_server.clone(), client_manager.clone()).await;
|
||||
|
||||
let dispatcher = Dispatcher::new(event_bus.clone(), udp_server.clone(), client_manager.clone(), store.clone()).await;
|
||||
|
||||
|
||||
Self {
|
||||
@@ -34,7 +43,9 @@ impl App {
|
||||
dispatcher,
|
||||
event_rx,
|
||||
udp_server,
|
||||
client_manager
|
||||
http_server,
|
||||
client_manager,
|
||||
store
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,6 +60,7 @@ impl App {
|
||||
|
||||
|
||||
let _ = self.udp_server.start().await;
|
||||
let _ = self.http_server.start("0.0.0.0:5000").await;
|
||||
let _ = self.tick_tasks().await;
|
||||
println!("App started");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user