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 { }