internal ValueExceptionHandlerSetting(IValueEventHandler <T> eventHandler, ConsumerRepository consumerRepository) { _eventHandler = eventHandler; _consumerRepository = consumerRepository; }
public ISequence GetSequenceFor <T>(IValueEventHandler <T> eventHandler) where T : struct { return(GetEventProcessorFor(eventHandler).Sequence); }
/// <summary> /// Get the <see cref="ISequenceBarrier"/> used by a specific handler. Note that the <see cref="ISequenceBarrier"/> /// may be shared by multiple event handlers. /// </summary> /// <param name="handler">the handler to get the barrier for</param> /// <returns>the SequenceBarrier used by the given handler</returns> public ISequenceBarrier GetBarrierFor(IValueEventHandler <T> handler) => _consumerRepository.GetBarrierFor(handler);
/// <summary> /// Gets the sequence value for the specified event handlers. /// </summary> /// <param name="handler">eventHandler to get the sequence for.</param> /// <returns>eventHandler's sequence</returns> public long GetSequenceValueFor(IValueEventHandler <T> handler) => _consumerRepository.GetSequenceFor(handler).Value;
/// <summary> /// Override the default exception handler for a specific handler. /// <code>disruptorWizard.HandleExceptionsIn(eventHandler).With(exceptionHandler);</code> /// </summary> /// <param name="eventHandler">eventHandler the event handler to set a different exception handler for</param> /// <returns>an <see cref="ValueExceptionHandlerSetting{T}"/> dsl object - intended to be used by chaining the with method call</returns> public ValueExceptionHandlerSetting <T> HandleExceptionsFor(IValueEventHandler <T> eventHandler) { return(new ValueExceptionHandlerSetting <T>(eventHandler, _consumerRepository)); }
public EventProcessorFactory(ValueDisruptor <TestValueEvent> disruptor, IValueEventHandler <TestValueEvent> eventHandler, int sequenceLength) { _disruptor = disruptor; _eventHandler = eventHandler; _sequenceLength = sequenceLength; }
/// <summary> /// Create a new <see cref="IBatchEventProcessor{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 IValueBatchEventProcessor <T> Create <T>(IValueDataProvider <T> dataProvider, ISequenceBarrier sequenceBarrier, IValueEventHandler <T> eventHandler) where T : struct { var dataProviderProxy = StructProxy.CreateProxyInstance(dataProvider); var sequenceBarrierProxy = StructProxy.CreateProxyInstance(sequenceBarrier); var eventHandlerProxy = StructProxy.CreateProxyInstance(eventHandler); var batchStartAwareProxy = eventHandler is IBatchStartAware batchStartAware?StructProxy.CreateProxyInstance(batchStartAware) : new NoopBatchStartAware(); var batchEventProcessorType = typeof(ValueBatchEventProcessor <, , , ,>).MakeGenericType(typeof(T), dataProviderProxy.GetType(), sequenceBarrierProxy.GetType(), eventHandlerProxy.GetType(), batchStartAwareProxy.GetType()); return((IValueBatchEventProcessor <T>)Activator.CreateInstance(batchEventProcessorType, dataProviderProxy, sequenceBarrierProxy, eventHandlerProxy, batchStartAwareProxy)); }
internal static IValueEventProcessor <T> Create <T>(IValueDataProvider <T> dataProvider, SequenceBarrier sequenceBarrier, IValueEventHandler <T> eventHandler, Type processorType) where T : struct { var dataProviderProxy = StructProxy.CreateProxyInstance(dataProvider); var sequencerOptions = sequenceBarrier.GetSequencerOptions(); var eventHandlerProxy = StructProxy.CreateProxyInstance(eventHandler); var onBatchStartInvoker = CreateOnBatchStartEvaluator(eventHandler); var eventProcessorType = processorType.MakeGenericType(typeof(T), dataProviderProxy.GetType(), sequencerOptions.GetType(), eventHandlerProxy.GetType(), onBatchStartInvoker.GetType()); return((IValueEventProcessor <T>)Activator.CreateInstance(eventProcessorType, dataProviderProxy, sequenceBarrier, eventHandlerProxy, onBatchStartInvoker) !); }
/// <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 IValueEventProcessor <T> Create <T>(IValueDataProvider <T> dataProvider, SequenceBarrier sequenceBarrier, IValueEventHandler <T> eventHandler) where T : struct { return(Create(dataProvider, sequenceBarrier, eventHandler, typeof(ValueEventProcessor <, , , ,>))); }