@@ -225,6 +225,34 @@ public sealed class OpcUaClientDriverOptions
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public bool MirrorTypeDefinitions { get; init; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// When <c>true</c> (default), the driver subscribes to
|
||||
/// <c>BaseModelChangeEventType</c> + <c>GeneralModelChangeEventType</c> on the
|
||||
/// upstream <c>Server</c> node (<c>i=2253</c>) at the end of <see cref="OpcUaClientDriver.InitializeAsync"/>.
|
||||
/// When the upstream advertises a topology change, the driver coalesces events over
|
||||
/// <see cref="ModelChangeDebounce"/> and triggers a re-import (equivalent to calling
|
||||
/// <c>ReinitializeAsync</c>) so the locally-mirrored address space tracks the upstream.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The re-import path acquires the same <c>_gate</c> that read / write / browse /
|
||||
/// subscribe paths use, which means there's a brief browse-gap (≈ the upstream
|
||||
/// <c>DiscoverAsync</c> duration) during which downstream calls block on the
|
||||
/// driver's gate. Operators can disable the watch when the upstream topology is
|
||||
/// known-static and the gap isn't acceptable.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public bool WatchModelChanges { get; init; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Coalescing window for upstream <c>ModelChangeEvent</c> notifications. The first
|
||||
/// event in a window starts the timer; further events extend it; when the timer
|
||||
/// fires the driver runs one re-import regardless of how many events arrived. Default
|
||||
/// 5 seconds — long enough to absorb a bulk topology edit on the upstream server,
|
||||
/// short enough that single-node adds re-import promptly.
|
||||
/// </summary>
|
||||
public TimeSpan ModelChangeDebounce { get; init; } = TimeSpan.FromSeconds(5);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user