using HanaToolbox.Logging; using HanaToolbox.Services.Interfaces; namespace HanaToolbox.Services; /// /// File-based alert state persistence. /// Each key maps to /etc/hanatoolbox/state/<key>.state containing a plain-text value. /// public sealed class FileMonitorStateService(AppLogger logger) : IMonitorStateService { private static readonly string StateDir = Config.ConfigService.StateDirectory; public string? GetState(string key) { var path = StatePath(key); if (!File.Exists(path)) return null; try { return File.ReadAllText(path).Trim(); } catch { return null; } } public void SetState(string key, string value) { try { Directory.CreateDirectory(StateDir); File.WriteAllText(StatePath(key), value); } catch (Exception ex) { logger.Warning($"Could not write state for '{key}': {ex.Message}"); } } private static string StatePath(string key) => Path.Combine(StateDir, $"{key}.state"); }