From 2798b91fe19e0246d8876f19e28bc225ad07e623 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 17 Mar 2026 10:55:47 -0400 Subject: [PATCH] Wire up debug view: route subscribe/unsubscribe through DeploymentManagerActor DeploymentManagerActor now handles SubscribeDebugViewRequest and UnsubscribeDebugViewRequest by forwarding to the appropriate Instance Actor. This completes the debug view data flow from Central UI through to the site's Instance Actor snapshot. Reduced refresh interval to 2s for responsiveness. --- .../Pages/Deployment/DebugView.razor | 2 +- .../Actors/DeploymentManagerActor.cs | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor b/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor index 47c5cf8..3dc6f2b 100644 --- a/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor +++ b/src/ScadaLink.CentralUI/Components/Pages/Deployment/DebugView.razor @@ -244,7 +244,7 @@ { // Connection may have dropped } - }, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)); + }, null, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(2)); } catch (Exception ex) { diff --git a/src/ScadaLink.SiteRuntime/Actors/DeploymentManagerActor.cs b/src/ScadaLink.SiteRuntime/Actors/DeploymentManagerActor.cs index d7f5c31..eeb0d11 100644 --- a/src/ScadaLink.SiteRuntime/Actors/DeploymentManagerActor.cs +++ b/src/ScadaLink.SiteRuntime/Actors/DeploymentManagerActor.cs @@ -1,6 +1,7 @@ using Akka.Actor; using Microsoft.Extensions.Logging; using ScadaLink.Commons.Messages.Artifacts; +using ScadaLink.Commons.Messages.DebugView; using ScadaLink.Commons.Messages.Deployment; using ScadaLink.Commons.Messages.Lifecycle; using ScadaLink.Commons.Types.Enums; @@ -56,6 +57,10 @@ public class DeploymentManagerActor : ReceiveActor, IWithTimers // WP-33: Handle system-wide artifact deployment Receive(HandleDeployArtifacts); + // Debug View — route to Instance Actors + Receive(RouteDebugViewSubscribe); + Receive(RouteDebugViewUnsubscribe); + // Internal startup messages Receive(HandleStartupConfigsLoaded); Receive(HandleStartNextBatch); @@ -337,6 +342,32 @@ public class DeploymentManagerActor : ReceiveActor, IWithTimers _logger.LogInformation("Instance {Instance} deleted", instanceName); } + // ── Debug View routing ── + + private void RouteDebugViewSubscribe(SubscribeDebugViewRequest request) + { + if (_instanceActors.TryGetValue(request.InstanceUniqueName, out var instanceActor)) + { + instanceActor.Forward(request); + } + else + { + _logger.LogWarning( + "Debug view subscribe for unknown instance {Instance}", request.InstanceUniqueName); + Sender.Tell(new DebugViewSnapshot( + request.InstanceUniqueName, Array.Empty(), + Array.Empty(), DateTimeOffset.UtcNow)); + } + } + + private void RouteDebugViewUnsubscribe(UnsubscribeDebugViewRequest request) + { + if (_instanceActors.TryGetValue(request.InstanceUniqueName, out var instanceActor)) + { + instanceActor.Forward(request); + } + } + /// /// WP-33: Handles system-wide artifact deployment (shared scripts, external systems, etc.). /// Persists artifacts to SiteStorageService and recompiles shared scripts.