[opcuaclient] OpcUaClient — Method node mirroring + Call passthrough #361
Reference in New Issue
Block a user
Delete Branch "auto/opcuaclient/9"
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
Method node mirroring + Call passthrough for OpcUaClient — new 9th capability interface.
Core.Abstractions/IMethodInvoker.cs(new) — capability interface withCallMethodAsync(objectNodeId, methodNodeId, inputs, ct)returningMethodCallResult(StatusCode, Outputs, InputArgumentResults).IAddressSpaceBuilder— extended with default-no-opRegisterMethodNode(MirroredMethodNodeInfo)plusMirroredMethodNodeInfoandMethodArgumentInfoDTOs. Existing builders (Galaxy, Modbus, FOCAS, S7, TwinCAT, AbCip, AbLegacy, server-sideDriverNodeManager) keep compiling unchanged.OpcUaClientDriver:NodeClass.Methodfrom browse pass.HasPropertyreferences to findInputArguments/OutputArgumentsproperties, reads them, decodesArgumentExtensionObjects intoMethodArgumentInfo, projects viaRegisterMethodNode.IMethodInvoker.CallMethodAsync— wraps inputs asVariants, dispatches viaSession.CallAsyncunder the existing_gate, returns Bad codes verbatim (cascading quality), surfaces local faults asBadNodeIdInvalid/BadCommunicationError.Test plan
dotnet build— Driver + Core.Abstractions + tests — clean (0 / 0)dotnet test tests/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Tests— 160 / 160 passed (7 new inOpcUaClientMethodInvokerTests: capability surface, DTOs, lifecycle invariants, default-no-op back-compat forRegisterMethodNode)dotnet test tests/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests— 37 / 37 passed🤖 Auto-generated by the Mode-B execution loop. Closes #281.
Closes #281