using Akka.Actor; using Akka.Hosting; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.DependencyInjection; namespace ZB.MOM.WW.OtOpcUa.AdminUI.Hubs; public static class HubServiceCollectionExtensions { public const string FleetStatusSignalRBridgeName = "fleet-status-signalr-bridge"; /// /// Spawns the SignalR bridge actors that forward DPS messages to browser-facing SignalR /// hubs. Currently: (DPS fleet-status topic → /// clients). /// /// Call inside the admin-role configurator on the shared : /// /// if (hasAdmin) /// { /// ab.WithOtOpcUaControlPlaneSingletons(); /// ab.WithOtOpcUaSignalRBridges(); /// } /// /// public static AkkaConfigurationBuilder WithOtOpcUaSignalRBridges(this AkkaConfigurationBuilder builder) { builder.WithActors((system, registry, resolver) => { var hub = resolver.GetService>(); var actor = system.ActorOf(FleetStatusSignalRBridge.Props(hub), FleetStatusSignalRBridgeName); registry.Register(actor); }); return builder; } } /// Marker key for lookup of the SignalR bridge actor. public sealed class FleetStatusSignalRBridgeKey { }