/// <summary> /// Construct a <see cref="IBatchEventProcessor{TEvent}"/> that will automatically track the progress by updating its sequence when the <see cref="IEventHandler{TEvent}.OnEvent(TEvent,long,bool)"/> method returns. /// </summary> /// <param name="exceptionHandler"></param> /// <param name="dataProvider">to which events are published.</param> /// <param name="sequenceBarrier">on which it is waiting.</param> /// <param name="eventHandler">is the delegate to which events are dispatched.</param> public BatchEventProcessor( IDataProvider <TEvent> dataProvider, ISequenceBarrier sequenceBarrier, IEventHandler <TEvent> eventHandler, IExceptionHandler <TEvent> exceptionHandler) { _exceptionHandler = exceptionHandler; _dataProvider = dataProvider; _sequenceBarrier = sequenceBarrier; _eventHandler = eventHandler; _sequence = new Sequence(); if (eventHandler is ISequenceReportingEventHandler <TEvent> reporting) { reporting?.SetSequenceCallback(_sequence); } if (eventHandler is IBatchStartAware batchStartAware) { _batchStartAware = batchStartAware; } if (eventHandler is ITimeoutHandler timeoutHandler) { _timeoutHandler = timeoutHandler; } if (eventHandler is ILifecycleAware lifecycleAware) { _lifecycleAware = lifecycleAware; } }
/// <summary> /// Construct a <see cref="BatchEventProcessor{T}"/> that will automatically track the progress by updating its sequence when /// the <see cref="IEventHandler{T}.OnEvent"/> method returns. /// </summary> /// <param name="dataProvider">dataProvider to which events are published</param> /// <param name="sequenceBarrier">SequenceBarrier on which it is waiting.</param> /// <param name="eventHandler">eventHandler is the delegate to which events are dispatched.</param> public BatchEventProcessor(IDataProvider <T> dataProvider, ISequenceBarrier sequenceBarrier, IEventHandler <T> eventHandler) { _dataProvider = dataProvider; _sequenceBarrier = sequenceBarrier; _eventHandler = eventHandler; if (eventHandler is ISequenceReportingEventHandler <T> sequenceReportingEventHandler) { sequenceReportingEventHandler.SetSequenceCallback(_sequence); } _batchStartAware = eventHandler as IBatchStartAware; _timeoutHandler = eventHandler as ITimeoutHandler; }
public BatchStartAware(object eventHandler) { _eventHandler = eventHandler as IBatchStartAware; }
public DefaultBatchStartAware(IBatchStartAware target) { _target = target; }