fix(otopcua): guard discovered-injection equipment id + cover deferred forwarding
This commit is contained in:
@@ -85,8 +85,12 @@ public interface IOpcUaAddressSpaceSink
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void RebuildAddressSpace();
|
void RebuildAddressSpace();
|
||||||
|
|
||||||
/// <summary>Announce that nodes were added at runtime (discovered-node injection) under
|
/// <summary>
|
||||||
/// <paramref name="affectedNodeId"/> so subscribed clients refresh their browse (Part 3 GeneralModelChangeEvent, verb NodeAdded).</summary>
|
/// Announce that nodes were added at runtime (discovered-node injection) under
|
||||||
|
/// <paramref name="affectedNodeId"/> so subscribed clients refresh their browse
|
||||||
|
/// (Part 3 GeneralModelChangeEvent, verb NodeAdded).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="affectedNodeId">The node under which discovered nodes were added.</param>
|
||||||
void RaiseNodesAddedModelChange(string affectedNodeId);
|
void RaiseNodesAddedModelChange(string affectedNodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -319,6 +319,7 @@ public sealed class AddressSpaceApplier
|
|||||||
IReadOnlyList<DiscoveredFolder> folders,
|
IReadOnlyList<DiscoveredFolder> folders,
|
||||||
IReadOnlyList<DiscoveredVariable> variables)
|
IReadOnlyList<DiscoveredVariable> variables)
|
||||||
{
|
{
|
||||||
|
ArgumentException.ThrowIfNullOrEmpty(equipmentRootNodeId);
|
||||||
ArgumentNullException.ThrowIfNull(folders);
|
ArgumentNullException.ThrowIfNull(folders);
|
||||||
ArgumentNullException.ThrowIfNull(variables);
|
ArgumentNullException.ThrowIfNull(variables);
|
||||||
if (folders.Count == 0 && variables.Count == 0) return;
|
if (folders.Count == 0 && variables.Count == 0) return;
|
||||||
|
|||||||
@@ -30,8 +30,9 @@ public sealed class DeferredAddressSpaceSinkTests
|
|||||||
deferred.WriteValue("x", 42, OpcUaQuality.Good, DateTime.UtcNow);
|
deferred.WriteValue("x", 42, OpcUaQuality.Good, DateTime.UtcNow);
|
||||||
deferred.WriteAlarmCondition("a-1", Snapshot(active: true), DateTime.UtcNow);
|
deferred.WriteAlarmCondition("a-1", Snapshot(active: true), DateTime.UtcNow);
|
||||||
deferred.RebuildAddressSpace();
|
deferred.RebuildAddressSpace();
|
||||||
|
deferred.RaiseNodesAddedModelChange("eq-1");
|
||||||
|
|
||||||
inner.Calls.ShouldBe(new[] { "WV:x", "WA:a-1", "RB" });
|
inner.Calls.ShouldBe(new[] { "WV:x", "WA:a-1", "RB", "NA:eq-1" });
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Verifies that setting sink to null reverts to null sink.</summary>
|
/// <summary>Verifies that setting sink to null reverts to null sink.</summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user