public void LoadMessageHandlerInvokers() { _status = Status.Loaded; _invokers = LoadInvokers(); LoadDispatchQueues(); MessageHandlerInvokersUpdated?.Invoke(); }
public void RemoveInvoker(IMessageHandlerInvoker eventHandlerInvoker) { lock (_lock) { var messageTypeInvokers = _invokers.GetValueOrDefault(eventHandlerInvoker.MessageTypeId); if (messageTypeInvokers == null) { return; } var newMessageTypeInvokers = new List <IMessageHandlerInvoker>(messageTypeInvokers.Where(x => x != eventHandlerInvoker)); _invokers[eventHandlerInvoker.MessageTypeId] = newMessageTypeInvokers; } MessageHandlerInvokersUpdated?.Invoke(); }
public void AddInvoker(IMessageHandlerInvoker newEventHandlerInvoker) { lock (_lock) { var existingMessageTypeInvokers = _invokers.GetValueOrDefault(newEventHandlerInvoker.MessageTypeId) ?? new List <IMessageHandlerInvoker>(); var newMessageTypeInvokers = new List <IMessageHandlerInvoker>(existingMessageTypeInvokers.Count + 1); newMessageTypeInvokers.AddRange(existingMessageTypeInvokers); newMessageTypeInvokers.Add(newEventHandlerInvoker); var dispatchQueueName = newEventHandlerInvoker.DispatchQueueName; if (!_dispatchQueues.ContainsKey(dispatchQueueName)) { var dispatchQueue = _dispatchQueueFactory.Create(dispatchQueueName); if (_dispatchQueues.TryAdd(dispatchQueueName, dispatchQueue) && _status == Status.Started) { dispatchQueue.Start(); } } _invokers[newEventHandlerInvoker.MessageTypeId] = newMessageTypeInvokers; } MessageHandlerInvokersUpdated?.Invoke(); }
public void RaiseMessageHandlerInvokersUpdated() => MessageHandlerInvokersUpdated?.Invoke();