namespace ZB.MOM.WW.OtOpcUa.Host.Configuration { /// /// MXAccess client configuration. (SVC-003, MXA-008, MXA-009) /// public class MxAccessConfiguration { /// /// Gets or sets the client name registered with the MXAccess runtime for this bridge instance. /// public string ClientName { get; set; } = "LmxOpcUa"; /// /// Gets or sets the Galaxy node name to target when the service connects to a specific runtime node. /// public string? NodeName { get; set; } /// /// Gets or sets the Galaxy name used when resolving MXAccess references and diagnostics. /// public string? GalaxyName { get; set; } /// /// Gets or sets the maximum time, in seconds, to wait for a live tag read to complete. /// public int ReadTimeoutSeconds { get; set; } = 5; /// /// Gets or sets the maximum time, in seconds, to wait for a tag write acknowledgment from the runtime. /// public int WriteTimeoutSeconds { get; set; } = 5; /// /// Gets or sets an outer safety timeout, in seconds, applied to sync-over-async MxAccess /// operations invoked from the OPC UA stack thread (Read, Write, address-space rebuild probe /// sync). This is a backstop for the case where an async path hangs outside the inner /// / bounds — e.g., a /// slow reconnect or a scheduler stall. Must be comfortably larger than the inner timeouts /// so normal operation is never affected. Default 30s. /// public int RequestTimeoutSeconds { get; set; } = 30; /// /// Gets or sets the cap on concurrent MXAccess operations so the bridge does not overload the runtime. /// public int MaxConcurrentOperations { get; set; } = 10; /// /// Gets or sets how often, in seconds, the connectivity monitor probes the runtime connection. /// public int MonitorIntervalSeconds { get; set; } = 5; /// /// Gets or sets a value indicating whether the bridge should automatically attempt to re-establish a dropped MXAccess /// session. /// public bool AutoReconnect { get; set; } = true; /// /// Gets or sets the optional probe tag used to verify that the MXAccess runtime is still returning fresh data. /// public string? ProbeTag { get; set; } /// /// Gets or sets the number of seconds a probe value may remain unchanged before the connection is considered stale. /// public int ProbeStaleThresholdSeconds { get; set; } = 60; /// /// Gets or sets a value indicating whether the bridge advises <ObjectName>.ScanState for every /// deployed $WinPlatform and $AppEngine, reporting per-host runtime state on the status /// dashboard and proactively invalidating OPC UA variable quality when a host transitions to Stopped. /// Enabled by default. Disable to return to legacy behavior where host runtime state is invisible and /// MxAccess's per-tag bad-quality fan-out is the only stop signal. /// public bool RuntimeStatusProbesEnabled { get; set; } = true; /// /// Gets or sets the maximum seconds to wait for the initial probe callback before marking a host as /// Stopped. Only applies to the Unknown → Stopped transition. Because ScanState is delivered /// on-change only, a stably Running host does not time out — no starvation check runs on Running /// entries. Default 15s. /// public int RuntimeStatusUnknownTimeoutSeconds { get; set; } = 15; } }