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.