feat: OPC UA address-space search plumbing — actor + comm + BrowseService (T15)

This commit is contained in:
Joseph Doherty
2026-06-18 02:51:57 -04:00
parent c00c8241b3
commit 74dd26eebd
7 changed files with 468 additions and 0 deletions
@@ -371,6 +371,28 @@ public class CommunicationService
envelope, _options.QueryTimeout, cancellationToken);
}
/// <summary>
/// Asks a site to run a bounded recursive search of the address space on the
/// live server backing the given data connection. The address-space analogue
/// of <see cref="BrowseNodeAsync"/> — used by the CentralUI OPC UA tag picker's
/// "find a tag" box. The Ask is bounded by <see cref="CommunicationOptions.QueryTimeout"/>,
/// the same latency budget as browse and the other interactive design-time
/// queries.
/// </summary>
/// <param name="siteId">The target site identifier.</param>
/// <param name="command">The address-space search command (connection name + query + depth/result caps).</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>The search result (matches + cap-reached flag + structured failure).</returns>
public Task<SearchAddressSpaceResult> SearchAddressSpaceAsync(
string siteId,
SearchAddressSpaceCommand command,
CancellationToken cancellationToken = default)
{
var envelope = new SiteEnvelope(siteId, command);
return GetActor().Ask<SearchAddressSpaceResult>(
envelope, _options.QueryTimeout, cancellationToken);
}
// ── Test Bindings (one-shot live read of bound tags) ──
/// <summary>