namespace ZB.MOM.WW.ScadaBridge.StoreAndForward; /// /// WP-9/10: Configuration options for the Store-and-Forward Engine. /// public class StoreAndForwardOptions { /// Path to the SQLite database for S&F message persistence. public string SqliteDbPath { get; set; } = "./data/store-and-forward.db"; /// WP-11: Whether to replicate buffer operations to standby node. public bool ReplicationEnabled { get; set; } = true; /// WP-10: Default retry interval for messages without per-source settings. public TimeSpan DefaultRetryInterval { get; set; } = TimeSpan.FromSeconds(30); /// /// WP-10: Default maximum retry count before parking. Applied when an /// EnqueueAsync caller does not pass an explicit maxRetries. /// /// StoreAndForward-019: this default is enforced uniformly across /// every category, including : /// once the buffered message's retry count reaches this cap the engine /// parks the row. The Component-StoreAndForward.md "notifications do not /// park" wording reflects the operational intent when central is /// reachable on the normal cadence; under a sustained central outage that /// exceeds DefaultMaxRetries × forward-interval a buffered /// notification will park and surface in the parked-message UI, /// matching the rest of the system's bounded-retry-then-park behaviour. /// Callers that genuinely require unbounded retry must pass /// maxRetries: 0 on EnqueueAsync (the documented "no limit" /// escape hatch — see StoreAndForwardService.EnqueueAsync). /// /// public int DefaultMaxRetries { get; set; } = 50; /// WP-10: Interval for the background retry timer sweep. public TimeSpan RetryTimerInterval { get; set; } = TimeSpan.FromSeconds(10); }