init
This commit is contained in:
+13
-1
@@ -3,12 +3,14 @@ pub mod state;
|
||||
use crate::config::AppConfig;
|
||||
use crate::database::Database;
|
||||
use crate::http::server::HttpServer;
|
||||
use crate::metrics::{reporter, AppMetrics};
|
||||
use crate::repositories::Repositories;
|
||||
use crate::udp::server::UdpServer;
|
||||
use event_bus::EventBus;
|
||||
use migration::{Migrator, MigratorTrait};
|
||||
pub use state::AppState;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub struct App {
|
||||
@@ -58,12 +60,15 @@ impl App {
|
||||
None
|
||||
};
|
||||
|
||||
let metrics = AppMetrics::new();
|
||||
|
||||
let state = AppState {
|
||||
db,
|
||||
config: Arc::new(config),
|
||||
repositories,
|
||||
init_token,
|
||||
default_server: Arc::new(default_server),
|
||||
metrics,
|
||||
};
|
||||
|
||||
Ok(Self { state })
|
||||
@@ -78,7 +83,14 @@ impl App {
|
||||
let (http_server, http_shutdown_tx) = HttpServer::new(&config.network, self.state.clone());
|
||||
|
||||
// Initialize UDP service
|
||||
let (udp_server, udp_shutdown_tx) = UdpServer::new(&config.network);
|
||||
let udp_metrics = Arc::clone(&self.state.metrics.udp);
|
||||
let (udp_server, udp_shutdown_tx) = UdpServer::new(&config.network, udp_metrics);
|
||||
|
||||
// Lance le reporter central de métriques toutes les 30 secondes
|
||||
reporter::spawn_reporter(
|
||||
Arc::new(self.state.metrics.clone()),
|
||||
Duration::from_secs(30),
|
||||
);
|
||||
|
||||
// On lance les serveurs dans des tâches séparées
|
||||
let mut http_handle = tokio::spawn(http_server.run());
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::config::AppConfig;
|
||||
use crate::metrics::AppMetrics;
|
||||
use crate::models::server;
|
||||
use crate::repositories::Repositories;
|
||||
use sea_orm::DatabaseConnection;
|
||||
@@ -11,6 +12,7 @@ pub struct AppState {
|
||||
pub repositories: Repositories,
|
||||
pub init_token: Option<uuid::Uuid>,
|
||||
pub default_server: Arc<server::Model>,
|
||||
pub metrics: AppMetrics,
|
||||
}
|
||||
|
||||
impl AppState {}
|
||||
|
||||
Reference in New Issue
Block a user