worker(alarms): advise ack-comment subtag so the ack write targets an active MXAccess item
This commit is contained in:
@@ -40,9 +40,9 @@ public sealed class SubtagAlarmConsumerTests
|
||||
return new SubtagAlarmConsumer(source, new[] { BuildTarget() });
|
||||
}
|
||||
|
||||
/// <summary>Verifies Subscribe advises the active, acked, and priority subtags but not the ack-comment subtag.</summary>
|
||||
/// <summary>Verifies Subscribe advises the active, acked, priority, and ack-comment subtags (the ack-comment is advised so it is an active, writable MXAccess item).</summary>
|
||||
[Fact]
|
||||
public void Subscribe_AdvisesActiveAndAckedSubtags()
|
||||
public void Subscribe_AdvisesAllSubtagsIncludingAckComment()
|
||||
{
|
||||
FakeSource source = new FakeSource();
|
||||
using SubtagAlarmConsumer consumer = BuildConsumer(source);
|
||||
@@ -52,7 +52,7 @@ public sealed class SubtagAlarmConsumerTests
|
||||
Assert.Contains(ActiveSubtag, source.Advised);
|
||||
Assert.Contains(AckedSubtag, source.Advised);
|
||||
Assert.Contains(PrioritySubtag, source.Advised);
|
||||
Assert.DoesNotContain(AckCommentSubtag, source.Advised);
|
||||
Assert.Contains(AckCommentSubtag, source.Advised);
|
||||
}
|
||||
|
||||
/// <summary>Verifies an active=true value change raises a degraded, GUID-stamped UNACK_ALM transition.</summary>
|
||||
|
||||
@@ -78,10 +78,15 @@ public sealed class SubtagAlarmConsumer : IMxAccessAlarmConsumer
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Advises every observable alarm subtag (active / acked / priority —
|
||||
/// the ack-comment subtag is a write-only target and is not advised)
|
||||
/// and begins listening for value changes. The <paramref name="subscription"/>
|
||||
/// expression is ignored: the subtag set is fixed by the watch list.
|
||||
/// Advises every alarm subtag (active / acked / priority, plus the
|
||||
/// ack-comment subtag) and begins listening for value changes. The
|
||||
/// ack-comment subtag is advised so it is an active MXAccess item by the
|
||||
/// time <see cref="AcknowledgeByName"/> writes it — MXAccess rejects a
|
||||
/// write to an added-but-not-advised item with E_INVALIDARG (confirmed
|
||||
/// against live MXAccess). Its value changes carry no transition (the
|
||||
/// state machine ignores addresses it does not map to active/acked).
|
||||
/// The <paramref name="subscription"/> expression is ignored: the subtag
|
||||
/// set is fixed by the watch list.
|
||||
/// </summary>
|
||||
/// <param name="subscription">The subscription expression (unused in subtag mode).</param>
|
||||
public void Subscribe(string subscription)
|
||||
@@ -97,6 +102,7 @@ public sealed class SubtagAlarmConsumer : IMxAccessAlarmConsumer
|
||||
AddIfNotEmpty(addresses, target.ActiveSubtag);
|
||||
AddIfNotEmpty(addresses, target.AckedSubtag);
|
||||
AddIfNotEmpty(addresses, target.PrioritySubtag);
|
||||
AddIfNotEmpty(addresses, target.AckCommentSubtag);
|
||||
}
|
||||
|
||||
source.Advise(addresses);
|
||||
|
||||
Reference in New Issue
Block a user