public void RemoveHandledHandler(Type handlerType) { IMessageHandlerProxy handler; if (_handlerDict.TryRemove(handlerType, out handler)) { if (_handlerDict.IsEmpty) { _parentMessageStream.RemoveHandledMessage(Message.Id); } } }
public Task <AsyncTaskResult> DispatchMessagesAsync(IEnumerable <IMessage> messages) { var messageStream = new DisptachingMessageStream(messages); foreach (var message in messages) { var handlers = _handlerProvider.GetHandlers(message.GetType()); if (!handlers.Any()) { messageStream.RemoveHandledMessage(message.Id); continue; } var dispatchingMessage = new DisptachingMessage(message, messageStream, handlers); foreach (var handler in handlers) { DispatchMessageToHandlerAsync(dispatchingMessage, handler, 0); } } return(messageStream.Task); }