/// <summary> /// Create a new <see cref="EventHandlerGroup{T}"/> that combines the <see cref="IEventHandler{T}"/> in this group with /// input handlers. /// </summary> /// <param name="handlers">the handlers to combine.</param> /// <returns>a new <see cref="EventHandlerGroup{T}"/> combining the existing and new handlers into a single dependency group.</returns> public EventHandlerGroup <T> And(params IEventHandler <T>[] handlers) { var processors = from handler in handlers select _eventProcessorRepository.GetEventProcessorFor(handler); var combindedProcessors = _eventProcessors.Concat(processors).ToArray(); return(new EventHandlerGroup <T>(_disruptor, _eventProcessorRepository, combindedProcessors)); }
/// <summary> /// Create a group of <see cref="IEventHandler{T}"/>s to be used as a dependency. /// </summary> /// <param name="handlers">the <see cref="IEventHandler{T}"/>s, previously set up with <see cref="HandleEventsWith(Disruptor.IEventHandler{T}[])"/>, /// that will form the <see cref="ISequenceBarrier"/> for subsequent handlers or processors. /// </param> /// <returns>an <see cref="EventHandlerGroup{T}"/> that can be used to setup a <see cref="ISequenceBarrier"/> over the specified <see cref="IEventHandler{T}"/>s.</returns> public EventHandlerGroup <T> After(params IEventHandler <T>[] handlers) { var selectedEventProcessors = new IEventProcessor[handlers.Length]; for (int i = 0; i < handlers.Length; i++) { selectedEventProcessors[i] = _eventProcessorRepository.GetEventProcessorFor(handlers[i]); } return(new EventHandlerGroup <T>(this, _eventProcessorRepository, selectedEventProcessors)); }