using ZB.MOM.WW.OtOpcUa.Commons.OpcUa; namespace ZB.MOM.WW.OtOpcUa.OpcUaServer; /// /// Production binding for v2 — bridges /// OpcUaPublishActor's writes to the SDK address space owned by /// . The host wires this in once the StandardServer has /// been started (so the node manager exists). /// public sealed class SdkAddressSpaceSink : IOpcUaAddressSpaceSink { private readonly OtOpcUaNodeManager _nodeManager; public SdkAddressSpaceSink(OtOpcUaNodeManager nodeManager) { ArgumentNullException.ThrowIfNull(nodeManager); _nodeManager = nodeManager; } public void WriteValue(string nodeId, object? value, OpcUaQuality quality, DateTime sourceTimestampUtc) => _nodeManager.WriteValue(nodeId, value, quality, sourceTimestampUtc); public void WriteAlarmState(string alarmNodeId, bool active, bool acknowledged, DateTime sourceTimestampUtc) => _nodeManager.WriteAlarmState(alarmNodeId, active, acknowledged, sourceTimestampUtc); public void EnsureFolder(string folderNodeId, string? parentNodeId, string displayName) => _nodeManager.EnsureFolder(folderNodeId, parentNodeId, displayName); public void RebuildAddressSpace() => _nodeManager.RebuildAddressSpace(); }