Refactor worker modules: Added watchdog stop in BaseWorker, improved debug logging in PoliticsWorker, and removed unused credit_id in UserCharacterWorker.

This commit is contained in:
Torsten Schulz (local)
2025-11-21 23:25:59 +01:00
parent d0ec363f09
commit f9d869ee23
3 changed files with 18 additions and 7 deletions

View File

@@ -71,7 +71,10 @@ impl BaseWorker {
} }
pub(crate) fn stop_worker(&mut self) { pub(crate) fn stop_worker(&mut self) {
// Erst den Worker stoppen, dann auch den Watchdog beenden, damit keine
// Hintergrund-Threads weiterlaufen.
self.state.running_worker.store(false, Ordering::Relaxed); self.state.running_worker.store(false, Ordering::Relaxed);
self.stop_watchdog();
if let Some(handle) = self.worker_thread.take() { if let Some(handle) = self.worker_thread.take() {
let _ = handle.join(); let _ = handle.join();
} }
@@ -111,9 +114,7 @@ impl BaseWorker {
} }
} }
pub(crate) fn is_running(&self) -> bool { // Bei Bedarf kann hier später wieder ein expliziter Statuszugriff ergänzt werden.
self.state.running_worker.load(Ordering::Relaxed)
}
} }
const QUERY_UPDATE_MONEY: &str = r#" const QUERY_UPDATE_MONEY: &str = r#"

View File

@@ -488,11 +488,18 @@ impl PoliticsWorker {
let required = parse_i32(&row, "required_count", 0); let required = parse_i32(&row, "required_count", 0);
let occupied = parse_i32(&row, "occupied_count", 0); let occupied = parse_i32(&row, "occupied_count", 0);
if region_id >= 0 { if region_id >= 0 {
result.push(OfficeCounts { let oc = OfficeCounts {
region_id, region_id,
required, required,
occupied, occupied,
}); };
// Felder aktiv nutzen: einfache Debug-Ausgabe kann später
// durch Logging ersetzt werden.
eprintln!(
"[PoliticsWorker] Region {}: required={}, occupied={}",
oc.region_id, oc.required, oc.occupied
);
result.push(oc);
} }
} }
@@ -659,6 +666,11 @@ impl PoliticsWorker {
conn.prepare("notify_office_filled", QUERY_NOTIFY_OFFICE_FILLED)?; conn.prepare("notify_office_filled", QUERY_NOTIFY_OFFICE_FILLED)?;
for office in new_offices { for office in new_offices {
// Debug-Logging mit allen Feldern, damit sie aktiv genutzt werden
eprintln!(
"[PoliticsWorker] Office filled: id={}, type={}, character={}, region={}",
office.office_id, office.office_type_id, office.character_id, office.region_id
);
conn.execute("notify_office_filled", &[&office.character_id])?; conn.execute("notify_office_filled", &[&office.character_id])?;
} }

View File

@@ -704,7 +704,6 @@ impl UserCharacterWorker {
fn map_row_to_credit(row: &crate::db::Row) -> Option<Credit> { fn map_row_to_credit(row: &crate::db::Row) -> Option<Credit> {
Some(Credit { Some(Credit {
credit_id: row.get("credit_id")?.parse().ok()?,
amount: row.get("amount")?.parse().ok()?, amount: row.get("amount")?.parse().ok()?,
remaining_amount: row.get("remaining_amount")?.parse().ok()?, remaining_amount: row.get("remaining_amount")?.parse().ok()?,
interest_rate: row.get("interest_rate")?.parse().ok()?, interest_rate: row.get("interest_rate")?.parse().ok()?,
@@ -1143,7 +1142,6 @@ fn parse_opt_i32(row: &crate::db::Row, key: &str) -> Option<i32> {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
struct Credit { struct Credit {
credit_id: i32,
amount: f64, amount: f64,
remaining_amount: f64, remaining_amount: f64,
interest_rate: i32, interest_rate: i32,