Beispiel #1
0
 public ValueEventPoller(IValueDataProvider <T> dataProvider, ISequencer sequencer, ISequence sequence, DependentSequenceGroup dependentSequences)
 {
     _dataProvider       = dataProvider;
     _sequencer          = sequencer;
     _sequence           = sequence;
     _dependentSequences = dependentSequences;
 }
    public static ValueEventPoller <T> Create <T>(IValueDataProvider <T> dataProvider, ISequencer sequencer, Sequence sequence, Sequence cursorSequence, params ISequence[] gatingSequences)
        where T : struct
    {
        var dependentSequences = new DependentSequenceGroup(cursorSequence, gatingSequences);

        return(new ValueEventPoller <T>(dataProvider, sequencer, sequence, dependentSequences));
    }
Beispiel #3
0
 public ValueEventPoller(IValueDataProvider <T> dataProvider, ISequencer sequencer, ISequence sequence, ISequence gatingSequence)
 {
     _dataProvider   = dataProvider;
     _sequencer      = sequencer;
     _sequence       = sequence;
     _gatingSequence = gatingSequence;
 }
Beispiel #4
0
        public static ValueEventPoller <T> Create <T>(IValueDataProvider <T> dataProvider, ISequencer sequencer, Sequence sequence, Sequence cursorSequence, params ISequence[] gatingSequences)
            where T : struct
        {
            var gatingSequence = SequenceGroups.CreateReadOnlySequence(cursorSequence, gatingSequences);

            return(new ValueEventPoller <T>(dataProvider, sequencer, sequence, gatingSequence));
        }
        internal static IValueBatchEventProcessor <T> Create <T>(IValueDataProvider <T> dataProvider, ISequenceBarrier sequenceBarrier, IValueEventHandler <T> eventHandler, Type processorType)
            where T : struct
        {
            var dataProviderProxy    = StructProxy.CreateProxyInstance(dataProvider);
            var sequenceBarrierProxy = StructProxy.CreateProxyInstance(sequenceBarrier);
            var eventHandlerProxy    = StructProxy.CreateProxyInstance(eventHandler);
            var batchStartAwareProxy = CreateBatchStartAwareProxy(eventHandler);

            var batchEventProcessorType = processorType.MakeGenericType(typeof(T), dataProviderProxy.GetType(), sequenceBarrierProxy.GetType(), eventHandlerProxy.GetType(), batchStartAwareProxy.GetType());

            return((IValueBatchEventProcessor <T>)Activator.CreateInstance(batchEventProcessorType, dataProviderProxy, sequenceBarrierProxy, eventHandlerProxy, batchStartAwareProxy));
        }
Beispiel #6
0
        /// <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));
        }
Beispiel #7
0
    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) !);
    }
Beispiel #8
0
 private static IValueEventProcessor <T> CreateEventProcessor <T>(IValueDataProvider <T> dataProvider, SequenceBarrier sequenceBarrier, IValueEventHandler <T> eventHandler)
     where T : struct
 {
     return(EventProcessorFactory.Create(dataProvider, sequenceBarrier, eventHandler));
 }
Beispiel #9
0
 /// <summary>
 /// <see cref="ISequencer.NewPoller{T}(IValueDataProvider{T}, ISequence[])"/>.
 /// </summary>
 public ValueEventPoller <T> NewPoller <T>(IValueDataProvider <T> provider, params ISequence[] gatingSequences)
     where T : struct
 {
     return(EventPoller.Create(provider, this, new Sequence(), _cursor, gatingSequences));
 }
 /// <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
 {
     return(Create(dataProvider, sequenceBarrier, eventHandler, typeof(ValueBatchEventProcessor <, , , ,>)));
 }
Beispiel #11
0
 public ValueEventPoller <T> NewPoller <T>(IValueDataProvider <T> provider, params ISequence[] gatingSequences)
     where T : struct
 {
     throw new NotSupportedException();
 }
Beispiel #12
0
 public ValueEventPoller <T> NewPoller <T>(IValueDataProvider <T> provider, params ISequence[] gatingSequences)
     where T : struct
 {
     return(null);
 }