feat(dcl): add BrowseChildrenAsync to IOpcUaClient (NotImplementedException stubs)

This commit is contained in:
Joseph Doherty
2026-05-28 11:53:10 -04:00
parent 2ff138f1e8
commit 7fc1f752f8
2 changed files with 26 additions and 0 deletions
@@ -1,3 +1,5 @@
using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Protocol;
namespace ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Adapters;
/// <summary>
@@ -102,6 +104,19 @@ public interface IOpcUaClient : IAsyncDisposable
/// becomes unreachable. The adapter layer uses this to trigger reconnection.
/// </summary>
event Action? ConnectionLost;
/// <summary>
/// Enumerates the immediate children of <paramref name="parentNodeId"/>
/// (or the server's ObjectsFolder when null). Throws
/// <see cref="ConnectionNotConnectedException"/> when the session is not
/// currently up.
/// </summary>
/// <param name="parentNodeId">Node id whose children to browse, or null for the server root.</param>
/// <param name="cancellationToken">A cancellation token that can be used to cancel the operation.</param>
/// <returns>A task that completes with the immediate children of the requested node.</returns>
Task<BrowseChildrenResult> BrowseChildrenAsync(
string? parentNodeId,
CancellationToken cancellationToken = default);
}
/// <summary>
@@ -180,6 +195,11 @@ internal class StubOpcUaClient : IOpcUaClient
return Task.FromResult<uint>(0); // Good status
}
/// <inheritdoc />
public Task<BrowseChildrenResult> BrowseChildrenAsync(
string? parentNodeId, CancellationToken cancellationToken = default)
=> throw new NotImplementedException();
/// <inheritdoc />
public ValueTask DisposeAsync()
{
@@ -325,6 +325,12 @@ public class RealOpcUaClient : IOpcUaClient
string.IsNullOrWhiteSpace(configured)
? Path.Combine(Path.GetTempPath(), "ScadaBridge", "pki", fallbackLeaf)
: configured;
/// <inheritdoc />
// Real implementation lands in Task 8 of the OPC UA tag browser plan.
public Task<Commons.Interfaces.Protocol.BrowseChildrenResult> BrowseChildrenAsync(
string? parentNodeId, CancellationToken cancellationToken = default)
=> throw new NotImplementedException();
}
/// <summary>