private bool HandleEvent(Type eventType, IEvent @event)
        {
            Contract.Requires(eventType, "eventType");
            Contract.Requires(@event, "@event");

            List <HandlerInfo> handlers;

            if (!_handlersByEventType.TryGetValue(eventType, out handlers))
            {
                return(false);
            }

            IDomainModel targetDomainModel = _store.GetDomainModel(@event.Domain);

            if (targetDomainModel == null)
            {
                return(false);
            }

            foreach (var info in handlers)
            {
                if ((info.DomainModelName == null || String.Compare(info.DomainModelName, targetDomainModel.Name, StringComparison.OrdinalIgnoreCase) == 0))
                {
                    var commands = info.Handler(targetDomainModel, @event);
                    Session.Current.Execute(commands.ToArray());
                }
            }

            return(handlers.Count > 0);
        }
Esempio n. 2
0
        private IEventDispatcher GetEventDispatcher(IEvent @event)
        {
            var domainModel = _store.GetDomainModel(@event.Domain);

            if (domainModel.EventDispatcher != null)
            {
                return(domainModel.EventDispatcher);
            }
            if (_defaultDispatcher == null)
            {
                _defaultDispatcher = _store.Services.Resolve <IEventDispatcher>();
                DebugContract.Assert(_defaultDispatcher != null);
            }
            return(_defaultDispatcher);
        }