57 lines
2.7 KiB
C#
57 lines
2.7 KiB
C#
namespace ZB.MOM.WW.MxGateway.Server.Configuration;
|
|
|
|
/// <summary>
|
|
/// Configuration for the gateway's always-on central alarm monitor
|
|
/// (<see cref="Alarms.GatewayAlarmMonitor"/>). When <see cref="Enabled"/>
|
|
/// is true the gateway opens one gateway-owned worker session dedicated to
|
|
/// alarms, caches the active-alarm set, and fans it out to every client
|
|
/// through the <c>StreamAlarms</c> RPC — no client opens its own session
|
|
/// to see alarms.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Defaults preserve current behaviour (alarm monitoring disabled).
|
|
/// Operators opt in by setting <c>MxGateway:Alarms:Enabled = true</c> and
|
|
/// supplying a canonical <c>\\<machine>\Galaxy!<area></c>
|
|
/// subscription expression. The literal "Galaxy" provider is correct
|
|
/// regardless of the configured Galaxy database name (the wnwrap consumer
|
|
/// does not accept the database name as the provider).
|
|
/// </remarks>
|
|
public sealed class AlarmsOptions
|
|
{
|
|
/// <summary>Gate the gateway's always-on central alarm monitor. Default false.</summary>
|
|
public bool Enabled { get; init; }
|
|
|
|
/// <summary>
|
|
/// AVEVA alarm-subscription expression the monitor subscribes on
|
|
/// startup. When empty and <see cref="Enabled"/> is true, the gateway
|
|
/// falls back to <c>\\$(MachineName)\Galaxy!$(DefaultArea)</c> if
|
|
/// <see cref="DefaultArea"/> is set; otherwise the monitor faults with
|
|
/// a configuration diagnostic.
|
|
/// </summary>
|
|
public string SubscriptionExpression { get; init; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Optional area name used to compose a default subscription when
|
|
/// <see cref="SubscriptionExpression"/> is empty. Combined with
|
|
/// <c>Environment.MachineName</c> as
|
|
/// <c>\\<MachineName>\Galaxy!<DefaultArea></c>.
|
|
/// </summary>
|
|
public string DefaultArea { get; init; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// How often the monitor reconciles its in-process alarm cache against
|
|
/// the worker's authoritative active-alarm snapshot, catching any
|
|
/// transitions the live poll-and-diff feed missed. Default 30 seconds;
|
|
/// the monitor floors it at 5 seconds.
|
|
/// </summary>
|
|
public int ReconcileIntervalSeconds { get; init; } = 30;
|
|
|
|
/// <summary>
|
|
/// Configuration for the alarm-manager ↔ subtag fallback mechanism:
|
|
/// operating mode, failure-detection thresholds, discovery, and subtag
|
|
/// names. Defaults (Mode = "Auto") preserve behaviour when the section is
|
|
/// omitted from configuration.
|
|
/// </summary>
|
|
public AlarmFallbackOptions Fallback { get; init; } = new();
|
|
}
|