private Bcl.IEnumerable <MessageRoute> RemoveActors(ILocalSendingSocket <IMessage> receivingSocket) { if (socketToActorMessagesMap.TryGetValue(receivingSocket, out var actorMessages)) { socketToActorMessagesMap.Remove(receivingSocket); foreach (var actor in actorMessages.Keys) { actorToSocketMap.Remove(actor); foreach (var message in actorMessages[actor]) { if (messageToActorMap.TryGetValue(message, out var messageHandlers)) { messageHandlers.Remove(actor); if (!messageHandlers.Any()) { messageToActorMap.Remove(message); } } yield return(new MessageRoute { Message = message, Receiver = actor }); } } } }
public ActorHostFactory(ISecurityProvider securityProvider, ILocalSocket <IMessage> localRouterSocket, ILocalSendingSocket <InternalRouteRegistration> internalRegistrationsSender, ILocalSocketFactory localSocketFactory, ILogger logger) { this.securityProvider = securityProvider; this.localRouterSocket = localRouterSocket; this.internalRegistrationsSender = internalRegistrationsSender; this.localSocketFactory = localSocketFactory; this.logger = logger; }
public ScaleOutListener(ISocketFactory socketFactory, ILocalSendingSocket <IMessage> localRouterSocket, IScaleOutConfigurationManager scaleOutConfigurationManager, ISecurityProvider securityProvider, IPerformanceCounterManager <KinoPerformanceCounters> performanceCounterManager, ILogger logger) { this.socketFactory = socketFactory; this.localRouterSocket = localRouterSocket; this.scaleOutConfigurationManager = scaleOutConfigurationManager; this.securityProvider = securityProvider; this.performanceCounterManager = performanceCounterManager; this.logger = logger; }
public bool Equals(ILocalSendingSocket <T> other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(GetIdentity() == other.As <ILocalSocket <T> >() .GetIdentity()); }
public ScaleOutListener(ISocketFactory socketFactory, ILocalSendingSocket <IMessage> localRouterSocket, IScaleOutConfigurationManager scaleOutConfigurationManager, ISecurityProvider securityProvider, IPerformanceCounterManager <KinoPerformanceCounters> performanceCounterManager, ILogger logger) { this.socketFactory = socketFactory; this.localRouterSocket = localRouterSocket; this.scaleOutConfigurationManager = scaleOutConfigurationManager; this.securityProvider = securityProvider; this.performanceCounterManager = performanceCounterManager; receiptConfirmationQueue = new BlockingCollection <Message>(new ConcurrentQueue <Message>()); this.logger = logger; }
private Bcl.IEnumerable <MessageRoute> RemoveMessageHub(ILocalSendingSocket <IMessage> receivingSocket) { // Should not be many, we can iterate the collection var messageHub = messageHubs.Where(kv => kv.Value.Equals(receivingSocket)) .Select(kv => kv.Key) .FirstOrDefault(); if (messageHub != null) { messageHubs.Remove(messageHub); yield return(new MessageRoute { Receiver = messageHub }); } }
public ClusterHealthMonitor(ISocketFactory socketFactory, ILocalSocketFactory localSocketFactory, ISecurityProvider securityProvider, ILocalSendingSocket <IMessage> routerLocalSocket, IConnectedPeerRegistry connectedPeerRegistry, ClusterHealthMonitorConfiguration config, ILogger logger) { deadPeersCheckInterval = TimeSpan.FromDays(1); this.socketFactory = socketFactory; this.securityProvider = securityProvider; multiplexingSocket = localSocketFactory.Create <IMessage>(); this.config = config; this.routerLocalSocket = routerLocalSocket; this.connectedPeerRegistry = connectedPeerRegistry; this.logger = logger; }
public ActorHost(IActorHandlerMap actorHandlerMap, IAsyncQueue <AsyncMessageContext> asyncQueue, IAsyncQueue <ActorRegistration> actorRegistrationsQueue, ISecurityProvider securityProvider, ILocalSocket <IMessage> localRouterSocket, ILocalSendingSocket <InternalRouteRegistration> internalRegistrationsSender, ILocalSocketFactory localSocketFactory, ILogger logger) { this.logger = logger; this.actorHandlerMap = actorHandlerMap; this.securityProvider = securityProvider; this.localRouterSocket = localRouterSocket; this.internalRegistrationsSender = internalRegistrationsSender; this.asyncQueue = asyncQueue; this.actorRegistrationsQueue = actorRegistrationsQueue; receivingSocket = localSocketFactory.Create <IMessage>(); }
public MessageHub(ICallbackHandlerStack callbackHandlers, ILocalSocket <IMessage> localRouterSocket, ILocalSendingSocket <InternalRouteRegistration> internalRegistrationsSender, ILocalSocketFactory localSocketFactory, IScaleOutConfigurationProvider scaleOutConfigurationProvider, ISecurityProvider securityProvider, ILogger logger, bool keepRegistrationLocal = false) { this.logger = logger; this.localRouterSocket = localRouterSocket; this.internalRegistrationsSender = internalRegistrationsSender; this.scaleOutConfigurationProvider = scaleOutConfigurationProvider; this.securityProvider = securityProvider; this.keepRegistrationLocal = keepRegistrationLocal; this.callbackHandlers = callbackHandlers; registrationsQueue = new BlockingCollection <CallbackRegistration>(new ConcurrentQueue <CallbackRegistration>()); receivingSocket = localSocketFactory.Create <IMessage>(); ReceiverIdentifier = ReceiverIdentities.CreateForMessageHub(); }
public Bcl.IEnumerable <MessageRoute> RemoveReceiverRoute(ILocalSendingSocket <IMessage> receivingSocket) => RemoveActors(receivingSocket) .Concat(RemoveMessageHub(receivingSocket)) .ToList();