Example #1
0
            public void RemoveHandledHandler(Type handlerType)
            {
                IMessageHandlerProxy handler;

                if (_handlerDict.TryRemove(handlerType, out handler))
                {
                    if (_handlerDict.IsEmpty)
                    {
                        _parentMessageStream.RemoveHandledMessage(Message.Id);
                    }
                }
            }
Example #2
0
        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);
        }