From c8529798357390ed16da585bc60950113f91b29c Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 28 May 2026 11:53:48 -0400 Subject: [PATCH] docs(dcl): document browse capability + BrowseOpcUaNodeCommand --- docs/requirements/Component-DataConnectionLayer.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/requirements/Component-DataConnectionLayer.md b/docs/requirements/Component-DataConnectionLayer.md index 2e909e96..26c72903 100644 --- a/docs/requirements/Component-DataConnectionLayer.md +++ b/docs/requirements/Component-DataConnectionLayer.md @@ -140,6 +140,14 @@ These are configured via `DataConnectionOptions` in `appsettings.json`, not per- - The existing subscription picks up the confirmed new value from the device and delivers it back to the Instance Actor as a standard value update. - The Instance Actor's in-memory value is **not** updated until the device confirms the write. +## Browsing the address space + +DCL is a clean data pipe on the hot path. Browse is an **opt-in capability** for protocols that support it, exposed via `IBrowsableDataConnection`. Only consumed by management/UI (the OPC UA tag picker on the instance configure page); Instance Actors never call it. + +- `OpcUaDataConnection` implements `IBrowsableDataConnection`; custom protocols do not. +- `DataConnectionManagerActor` handles `BrowseOpcUaNodeCommand` (fields: `DataConnectionId`, `ParentNodeId`) and replies with `BrowseOpcUaNodeResult` (children + `Truncated` + structured `BrowseFailure?`). +- Browse runs against the live session; no caching at DCL. + ## Value Update Message Format Each value update delivered to an Instance Actor includes: