gateway: alarm-RPC dispatcher seam (PRs A.6 + A.7) #117
Reference in New Issue
Block a user
Delete Branch "track-a6-a7-alarm-rpc-dispatch"
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
Replaces the inline diagnostic strings in PR A.3's
AcknowledgeAlarm+QueryActiveAlarmshandlers with anIAlarmRpcDispatcherseam.IAlarmRpcDispatcher(new) — gateway-side abstraction over the worker-RPC path that frontsAlarmClient.AlarmAckByGUIDand the active-alarm walk.AcknowledgeAsyncreturns theAcknowledgeAlarmReplydirectly;QueryActiveAlarmsAsyncyields anIAsyncEnumerable<ActiveAlarmSnapshot>.NotWiredAlarmRpcDispatcher(new, default impl) — returnsPROTOCOL_STATUS_OKwith a structured worker-pending diagnostic on Acknowledge, yields an empty stream on QueryActiveAlarms. Same observable shape as PR A.3, but the integration seam is now in code instead of hardcoded inside the handler.MxAccessGatewayService— handlers delegate to the dispatcher. Constructor accepts an optionalIAlarmRpcDispatcher(defaultNotWiredAlarmRpcDispatcher); a futureWorkerAlarmRpcDispatcherregistration in DI swaps in the live worker-IPC routing without changing the public RPC surface.Test plan
Follow-up
Worker-side dispatch — translating Acknowledge / QueryActiveAlarms to the IPC method that calls
IMxAccessAlarmConsumerfrom PR A.5 — is the dev-rig follow-up. It depends on validating the AVEVAGetAlarmChangesCompletedevent subscription against a live alarm provider before pinning a wire format.