Example #1
0
        protected override void When(DomainEvent domainEvent)
        {
            Boolean handled = false;
            IInternalEventHandler entityToApply = Leases;

            switch (domainEvent)
            {
            case DHCPv6ScopePropertiesUpdatedEvent e:
                Properties = e.Properties;
                break;

            case DHCPv6ScopeAddressPropertiesUpdatedEvent e:
                AddressRelatedProperties = e.AddressProperties;
                SetSuspendedState(true, false);
                break;

            case DHCPv6ScopeDescriptionUpdatedEvent e:
                Description = new ScopeDescription(e.Description);
                break;

            case DHCPv6ScopeNameUpdatedEvent e:
                Name = new ScopeName(e.Name);
                break;

            default:
                break;
            }

            if (handled == false)
            {
                ApplyToEnity(entityToApply, domainEvent);
            }
        }
Example #2
0
        protected void ApplyToEnity(IInternalEventHandler entity, DomainEvent domainEvent, Boolean onlyIfNotAlreadyHandeld = true)
        {
            if (entity == null || domainEvent == null)
            {
                return;
            }

            if (domainEvent.IsHandled() == false || onlyIfNotAlreadyHandeld == false)
            {
                entity.Handle(domainEvent);
            }
        }
 protected override Action GenerateUnsubscriptionAction(IInternalEventHandler handler)
 {
     return delegate
                {
                    lock (_sync)
                    {
                        IList<IInternalEventHandler> handlers;
                        if (HandlersDictionary.TryGetValue(handler.EventType, out handlers))
                        {
                            var newHandlers = new List<IInternalEventHandler>(handlers);
                            if (newHandlers.Remove(handler))
                            {
                                HandlersDictionary[handler.EventType] = newHandlers;
                            }
                        }
                    }
                };
 }
        public override Action Subscribe(IInternalEventHandler handler)
        {
            lock (_sync)
            {
                IList<IInternalEventHandler> handlers;
                if (!HandlersDictionary.TryGetValue(handler.EventType, out handlers))
                {
                    var newHandlersDictionary = new Dictionary<Type, IList<IInternalEventHandler>>(HandlersDictionary) {{handler.EventType, new List<IInternalEventHandler> {handler}}};
                    HandlersDictionary = newHandlersDictionary;
                }
                else
                {
                    var newHandlers = new List<IInternalEventHandler>(handlers) {handler};
                    HandlersDictionary[handler.EventType] = newHandlers;
                }
            }

            return GenerateUnsubscriptionAction(handler);
        }
 protected void ApplyToEntity(IInternalEventHandler entity, object @event) => entity?.Handle(@event);
Example #6
0
 protected void ApplyToEntity(IInternalEventHandler <EventArgs> entity, object args)
 => entity?.HandleEvent(this, args);
Example #7
0
 protected void ApplyToEntity(IInternalEventHandler entity, DomainEvent domainEvent)
 => entity?.Handle(domainEvent);