Add TransportWorker and enhance logging: Introduced TransportWorker to the worker module and improved shutdown logging in the daemon for better visibility during system termination. Updated watchdog thread sleep mechanism for quicker shutdown response and refined error handling in DbError conversion to include SQLSTATE as a string.
This commit is contained in:
10
src/main.rs
10
src/main.rs
@@ -14,7 +14,7 @@ use message_broker::MessageBroker;
|
||||
use websocket_server::WebSocketServer;
|
||||
use worker::{
|
||||
CharacterCreationWorker, ConnectionPool, DirectorWorker, HouseWorker, PoliticsWorker,
|
||||
ProduceWorker, StockageManager, UndergroundWorker, UserCharacterWorker,
|
||||
ProduceWorker, StockageManager, TransportWorker, UndergroundWorker, UserCharacterWorker,
|
||||
ValueRecalculationWorker, Worker,
|
||||
};
|
||||
|
||||
@@ -62,6 +62,7 @@ fn run_daemon() -> Result<(), Box<dyn std::error::Error>> {
|
||||
fn install_signal_handler() -> Result<(), Box<dyn std::error::Error>> {
|
||||
// Behandle SIGINT/SIGTERM (z.B. Strg+C) und leite auf das globale Flag um.
|
||||
ctrlc::set_handler(|| {
|
||||
eprintln!("[Daemon] SIGINT/SIGTERM empfangen, fahre kontrolliert herunter...");
|
||||
KEEP_RUNNING.store(false, Ordering::SeqCst);
|
||||
})?;
|
||||
Ok(())
|
||||
@@ -138,6 +139,7 @@ fn create_workers(pool: ConnectionPool, broker: MessageBroker) -> Vec<Box<dyn Wo
|
||||
)),
|
||||
Box::new(HouseWorker::new(pool.clone(), broker.clone())),
|
||||
Box::new(PoliticsWorker::new(pool.clone(), broker.clone())),
|
||||
Box::new(TransportWorker::new(pool.clone(), broker.clone())),
|
||||
Box::new(UndergroundWorker::new(pool, broker)),
|
||||
]
|
||||
}
|
||||
@@ -161,6 +163,7 @@ fn shutdown_system(
|
||||
workers: &mut [Box<dyn Worker>],
|
||||
broker: &MessageBroker,
|
||||
) {
|
||||
eprintln!("[Daemon] Shutdown-System gestartet: stoppe Worker...");
|
||||
// systemd: wir fahren nun kontrolliert herunter
|
||||
let _ = daemon::notify(false, &[NotifyState::Stopping]);
|
||||
|
||||
@@ -171,16 +174,21 @@ fn shutdown_system(
|
||||
}
|
||||
|
||||
// 2) WebSocket-Server stoppen (Tokio-Runtime herunterfahren)
|
||||
eprintln!("[Daemon] WebSocket-Server wird gestoppt...");
|
||||
websocket_server.stop();
|
||||
|
||||
// 3) MessageBroker-Hook – aktuell noch Stub, aber hier zentral ergänzt
|
||||
// für eine spätere interne Queue/Thread-Implementierung.
|
||||
eprintln!("[Daemon] Broker wird gestoppt...");
|
||||
broker.stop();
|
||||
eprintln!("[Daemon] Shutdown-System abgeschlossen.");
|
||||
}
|
||||
|
||||
fn run_main_loop() {
|
||||
eprintln!("[Daemon] Hauptloop gestartet.");
|
||||
while KEEP_RUNNING.load(Ordering::Relaxed) {
|
||||
thread::sleep(Duration::from_millis(100));
|
||||
}
|
||||
eprintln!("[Daemon] Hauptloop beendet, starte Shutdown-Sequenz...");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user