Phase 3 PR 68 -- OPC UA Client ITagDiscovery (Full browse) #67
Reference in New Issue
Block a user
Delete Branch "phase-3-pr68-opcua-client-discovery"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
ITagDiscoverytoOpcUaClientDrivervia recursiveSession.BrowseAsyncfrom the configured root (defaultObjectsFolderi=85). Objects → sub-folders, Variables →builder.Variableentries withFullName = NodeId.ToString()so reads/writes round-trip without re-resolving.Safety caps (new options):
BrowseRoot— scope restriction for 100k+-node serversMaxDiscoveredNodes = 10_000— memory bound; graceful degradation on overflowMaxBrowseDepth = 10— cycle guardVisited-set prevents infinite loops on back-referenced graphs. Transient browse failures on a subtree don't kill the whole discovery.
Deferred to a follow-up PR: DataType resolution via batch
ReadAsync(Attributes.DataType)soDriverAttributeInfo.DriverDataTypeis accurate instead of the currentInt32placeholder; AccessLevel → SecurityClass; array detection via ValueRank.Validation
dotnet build: 0 errorsScope
Live-browse coverage against a real remote server is deferred to the in-process-fixture PR (
Serverproject is a candidate host).ISubscribable+IHostConnectivityProbeland in PR 69.Test plan
DiscoverAsyncpre-init throws uniformlyArgumentNullException