internal static IEventProcessor <T> Create <T>(IDataProvider <T> dataProvider, SequenceBarrier sequenceBarrier, IBatchEventHandler <T> eventHandler, Type processorType) where T : class { var dataProviderProxy = StructProxy.CreateProxyInstance(dataProvider); var sequencerOptions = sequenceBarrier.GetSequencerOptions(); var eventHandlerProxy = StructProxy.CreateProxyInstance(eventHandler); var eventProcessorType = processorType.MakeGenericType(typeof(T), dataProviderProxy.GetType(), sequencerOptions.GetType(), eventHandlerProxy.GetType()); return((IEventProcessor <T>)Activator.CreateInstance(eventProcessorType, dataProviderProxy, sequenceBarrier, eventHandlerProxy) !); }
private static IEventProcessor <T> CreateEventProcessor <T>(IDataProvider <T> dataProvider, SequenceBarrier sequenceBarrier, IBatchEventHandler <T> eventHandler) where T : class { return(EventProcessorFactory.Create(dataProvider, sequenceBarrier, eventHandler)); }
/// <summary> /// Create a new <see cref="IEventProcessor{T}"/> with dedicated generic arguments. /// </summary> /// <typeparam name="T">the type of event used.</typeparam> /// <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> /// <returns></returns> public static IEventProcessor <T> Create <T>(IDataProvider <T> dataProvider, SequenceBarrier sequenceBarrier, IBatchEventHandler <T> eventHandler) where T : class { return(Create(dataProvider, sequenceBarrier, eventHandler, typeof(BatchEventProcessor <, , ,>))); }