docs(xmldoc): fill missing XML docs + strip tracking-ID comments across src
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Adds <summary>/<param>/<returns>/<inheritdoc> where missing and removes project bookkeeping IDs (task/tracking refs) from shipped code comments, so the docs read cleanly and CommentChecker is quiet except for known false positives (PLC/protocol terms, event/IEqualityComparer inheritdoc). Doc/comment-only; no logic changed; solution builds clean.
This commit is contained in:
+9
-20
@@ -32,25 +32,19 @@ internal sealed class OpcUaClientBrowseSession : IBrowseSession
|
||||
_rootNodeId = rootNodeId;
|
||||
}
|
||||
|
||||
/// <summary>Opaque token identifying this session in the AdminUI registry.</summary>
|
||||
/// <inheritdoc />
|
||||
public Guid Token { get; } = Guid.NewGuid();
|
||||
|
||||
/// <summary>Wall-clock time of the most recent successful browse call; the reaper uses
|
||||
/// this for idle eviction.</summary>
|
||||
/// <inheritdoc />
|
||||
public DateTime LastUsedUtc { get; private set; } = DateTime.UtcNow;
|
||||
|
||||
/// <summary>Browse one level under the configured root node.</summary>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
/// <inheritdoc />
|
||||
public Task<IReadOnlyList<BrowseNode>> RootAsync(CancellationToken cancellationToken)
|
||||
=> BrowseOneLevelAsync(_rootNodeId, cancellationToken);
|
||||
|
||||
/// <summary>Browse one level under the node identified by <paramref name="nodeId"/>,
|
||||
/// which must be a stable reference produced by <see cref="NamespaceMap.ToStableReference"/>
|
||||
/// (or a plain <c>ns=N;…</c> form).</summary>
|
||||
/// <param name="nodeId">Stable reference string for the parent node.</param>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
/// <exception cref="ArgumentException">Thrown when <paramref name="nodeId"/> cannot be
|
||||
/// resolved against the live session's namespace table.</exception>
|
||||
/// <inheritdoc />
|
||||
// Throws ArgumentException when nodeId cannot be resolved against the live session's
|
||||
// namespace table.
|
||||
public Task<IReadOnlyList<BrowseNode>> ExpandAsync(string nodeId, CancellationToken cancellationToken)
|
||||
{
|
||||
if (!NamespaceMap.TryResolve(_session, nodeId, out var resolved))
|
||||
@@ -59,12 +53,7 @@ internal sealed class OpcUaClientBrowseSession : IBrowseSession
|
||||
return BrowseOneLevelAsync(resolved, cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>The OPC UA picker treats variables as terminal leaves and does not surface
|
||||
/// a per-attribute side-panel, so this always returns empty. <see cref="LastUsedUtc"/>
|
||||
/// is still refreshed to honour the <see cref="IBrowseSession"/> contract and prevent
|
||||
/// the reaper from evicting an active session that only receives attribute calls.</summary>
|
||||
/// <param name="nodeId">Ignored.</param>
|
||||
/// <param name="cancellationToken">Ignored.</param>
|
||||
/// <inheritdoc />
|
||||
public Task<IReadOnlyList<AttributeInfo>> AttributesAsync(string nodeId, CancellationToken cancellationToken)
|
||||
{
|
||||
LastUsedUtc = DateTime.UtcNow;
|
||||
@@ -111,8 +100,7 @@ internal sealed class OpcUaClientBrowseSession : IBrowseSession
|
||||
var refs = result.References;
|
||||
|
||||
// Follow browse continuation points so folders larger than the server's per-call
|
||||
// cap aren't silently truncated (same pattern as runtime
|
||||
// Driver.OpcUaClient-003).
|
||||
// cap aren't silently truncated.
|
||||
var cp = result.ContinuationPoint;
|
||||
while (cp is { Length: > 0 })
|
||||
{
|
||||
@@ -163,6 +151,7 @@ internal sealed class OpcUaClientBrowseSession : IBrowseSession
|
||||
/// <summary>Idempotent best-effort dispose: closes the underlying session if it's a
|
||||
/// concrete <see cref="Session"/>, disposes it, and disposes the gate. Close errors are
|
||||
/// swallowed because the registry reaper may be racing a remote disconnect.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
if (_disposed) return;
|
||||
|
||||
Reference in New Issue
Block a user