Exemplo n.º 1
0
        private bool RunEvent(AnimalEvent e, AnimalBoxEventContext context)
        {
            IAnimalEventHandler handler = InstantiateEventHandler(e);

            if (!handler.Validate(e, context))
            {
                return(false);
            }
            handler.Apply(e, context);

            return(true);
        }
Exemplo n.º 2
0
        public async Task <bool> RunEventsAsync(IEnumerable <AnimalEvent> events)
        {
            AnimalBoxEventContext eventContext = InstantiateBoxContext();

            foreach (AnimalEvent e in events.OrderBy(e => e.Time))
            {
                AdvanceTime(e.Time);
                if (!RunEvent(e, eventContext))
                {
                    // Rollback();
                    return(false);
                }
            }

            return(true);
        }