コード例 #1
0
 public Fix44MessageHandler(
     IEventTranslatorTwoArg <NewOrderEvent, Order, SessionID> translator,
     IRingBufferCaller <NewOrderEvent> newOrderEventRingBufferCaller)
 {
     this.translator = translator;
     this.newOrderEventRingBufferCaller = newOrderEventRingBufferCaller;
 }
コード例 #2
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
        public void PublishEvents <A, B>(IEventTranslatorTwoArg <T, A, B> translator, int batchStartsAt, int batchSize, A[] arg0, B[] arg1)
        {
            CheckBounds(arg0, arg1, batchStartsAt, batchSize);
            long finalSequence = _fields.Sequencer.Next(batchSize);

            TranslateAndPublishBatch(translator, arg0, arg1, batchStartsAt, batchSize, finalSequence);
        }
コード例 #3
0
ファイル: RingBuffer.cs プロジェクト: lichunhui811217/MDA
        public void PublishEvents <TArg0, TArg1>(IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translators, int batchStartsAt, int batchSize, TArg0[] arg0, TArg1[] arg1)
        {
            CheckBounds(arg0, arg1, batchStartsAt, batchSize);
            var finalSequence = Sequencer.Next(batchSize);

            TranslateAndPublishBatch(translators, arg0, arg1, batchStartsAt, batchSize, finalSequence);
        }
コード例 #4
0
        /// <summary>
        /// <see cref="IEventSink{T}.TryPublishEvent{A,B}(IEventTranslatorTwoArg{T,A,B},A,B)"/>
        /// </summary>
        public bool TryPublishEvent <A, B>(IEventTranslatorTwoArg <T, A, B> translator, A arg0, B arg1)
        {
            if (_fields.Sequencer.TryNext(out var sequence))
            {
                TranslateAndPublish(translator, sequence, arg0, arg1);
                return(true);
            }

            return(false);
        }
コード例 #5
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
 private void TranslateAndPublish <A, B>(IEventTranslatorTwoArg <T, A, B> translator, long sequence, A arg0, B arg1)
 {
     try
     {
         translator.TranslateTo(this[sequence], sequence, arg0, arg1);
     }
     finally
     {
         _fields.Sequencer.Publish(sequence);
     }
 }
コード例 #6
0
        /// <summary>
        /// <see cref="IEventSink{T}.TryPublishEvents{A,B}(IEventTranslatorTwoArg{T,A,B},int,int,A[],B[])"/>
        /// </summary>
        public bool TryPublishEvents <A, B>(IEventTranslatorTwoArg <T, A, B> translator, int batchStartsAt, int batchSize, A[] arg0, B[] arg1)
        {
            CheckBounds(arg0, arg1, batchStartsAt, batchSize);

            if (_fields.Sequencer.TryNext(batchSize, out var finalSequence))
            {
                TranslateAndPublishBatch(translator, arg0, arg1, batchStartsAt, batchSize, finalSequence);
                return(true);
            }

            return(false);
        }
コード例 #7
0
ファイル: RingBuffer.cs プロジェクト: lichunhui811217/MDA
 public bool TryPublishEvent <TArg0, TArg1>(IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translator, TArg0 arg0, TArg1 arg1)
 {
     try
     {
         Sequencer.TryNext(out long sequence);
         TranslateAndPublish(translator, sequence, arg0, arg1);
         return(true);
     }
     catch (InsufficientCapacityException e)
     {
         return(false);
     }
 }
コード例 #8
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
 public bool TryPublishEvent <A, B>(IEventTranslatorTwoArg <T, A, B> translator, A arg0, B arg1)
 {
     try
     {
         long sequence = _fields.Sequencer.TryNext();
         TranslateAndPublish(translator, sequence, arg0, arg1);
         return(true);
     }
     catch (InsufficientCapacityException)
     {
         return(false);
     }
 }
コード例 #9
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
 public bool TryPublishEvents <A, B>(IEventTranslatorTwoArg <T, A, B> translator, int batchStartsAt, int batchSize, A[] arg0, B[] arg1)
 {
     CheckBounds(arg0, arg1, batchStartsAt, batchSize);
     try
     {
         long finalSequence = _fields.Sequencer.TryNext(batchSize);
         TranslateAndPublishBatch(translator, arg0, arg1, batchStartsAt, batchSize, finalSequence);
         return(true);
     }
     catch (InsufficientCapacityException)
     {
         return(false);
     }
 }
コード例 #10
0
ファイル: RingBuffer.cs プロジェクト: lichunhui811217/MDA
 private void TranslateAndPublish <TArg0, TArg1>(
     IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translator,
     long sequence, TArg0 arg0,
     TArg1 arg1)
 {
     try
     {
         translator.TranslateTo(Get(sequence), sequence, arg0, arg1);
     }
     finally
     {
         Sequencer.Publish(sequence);
     }
 }
コード例 #11
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
        private void TranslateAndPublishBatch <A, B>(IEventTranslatorTwoArg <T, A, B> translator, A[] arg0,
                                                     B[] arg1, int batchStartsAt, int batchSize,
                                                     long finalSequence)
        {
            long initialSequence = finalSequence - (batchSize - 1);

            try
            {
                long sequence    = initialSequence;
                int  batchEndsAt = batchStartsAt + batchSize;
                for (int i = batchStartsAt; i < batchEndsAt; i++)
                {
                    translator.TranslateTo(this[sequence], sequence++, arg0[i], arg1[i]);
                }
            }
            finally
            {
                _fields.Sequencer.Publish(initialSequence, finalSequence);
            }
        }
コード例 #12
0
ファイル: RingBuffer.cs プロジェクト: lichunhui811217/MDA
        private void TranslateAndPublishBatch <TArg0, TArg1>(
            IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translator,
            TArg0[] arg0, TArg1[] arg1,
            int batchStartsAt, int batchSize,
            long finalSequence)
        {
            var initialSequence = finalSequence - (batchSize - 1);

            try
            {
                var sequence    = initialSequence;
                var batchEndsAt = batchStartsAt + batchSize;
                for (int i = batchStartsAt; i < batchEndsAt; i++)
                {
                    translator.TranslateTo(Get(sequence), sequence++, arg0[i], arg1[i]);
                }
            }
            finally
            {
                Sequencer.Publish(initialSequence, finalSequence);
            }
        }
コード例 #13
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
 public bool TryPublishEvents <A, B>(IEventTranslatorTwoArg <T, A, B> translator, A[] arg0, B[] arg1)
 {
     return(TryPublishEvents(translator, 0, arg0.Length, arg0, arg1));
 }
コード例 #14
0
ファイル: RingBuffer.cs プロジェクト: winxuexu/MDA
 public bool TryPublishEvents <A, B>(IEventTranslatorTwoArg <TEvent, A, B> translator, int batchStartsAt, int batchSize, A[] arg0, B[] arg1)
 {
     throw new NotImplementedException();
 }
コード例 #15
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
 public void PublishEvents <A, B>(IEventTranslatorTwoArg <T, A, B> translator, A[] arg0, B[] arg1)
 {
     PublishEvents(translator, 0, arg0.Length, arg0, arg1);
 }
コード例 #16
0
ファイル: RingBuffer.cs プロジェクト: zzms/Disruptor-net
        public void PublishEvent <A, B>(IEventTranslatorTwoArg <T, A, B> translator, A arg0, B arg1)
        {
            long sequence = _fields.Sequencer.Next();

            TranslateAndPublish(translator, sequence, arg0, arg1);
        }
コード例 #17
0
ファイル: RingBuffer.cs プロジェクト: winxuexu/MDA
 public void PublishEvents <A, B>(IEventTranslatorTwoArg <TEvent, A, B> translator, A[] arg0, B[] arg1)
 {
     throw new NotImplementedException();
 }
コード例 #18
0
ファイル: RingBuffer.cs プロジェクト: lichunhui811217/MDA
 public void PublishEvents <TArg0, TArg1>(IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translators, TArg0[] arg0, TArg1[] arg1)
 {
     PublishEvents(translators, 0, arg0.Length, arg0, arg1);
 }
コード例 #19
0
ファイル: RingBuffer.cs プロジェクト: lichunhui811217/MDA
        public void PublishEvent <TArg0, TArg1>(IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translator, TArg0 arg0, TArg1 arg1)
        {
            var sequence = Sequencer.Next();

            TranslateAndPublish(translator, sequence, arg0, arg1);
        }
コード例 #20
0
ファイル: RingBuffer.cs プロジェクト: winxuexu/MDA
 public void PublishEvent <TArg0, TArg1>(IEventTranslatorTwoArg <TEvent, TArg0, TArg1> translator, TArg0 arg0, TArg1 arg1)
 {
     throw new NotImplementedException();
 }
コード例 #21
0
ファイル: Disruptor.cs プロジェクト: felements/Disruptor-net
 /// <summary>
 ///  Publish an event to the ring buffer.
 /// </summary>
 /// <typeparam name="A">Class of the user supplied argument.</typeparam>
 /// <typeparam name="B">Class of the user supplied argument.</typeparam>
 /// <param name="eventTranslator">the translator that will load data into the event.</param>
 /// <param name="arg0">The first argument to load into the event</param>
 /// <param name="arg1">The second argument to load into the event</param>
 public void PublishEvent <A, B>(IEventTranslatorTwoArg <T, A, B> eventTranslator, A arg0, B arg1) => _ringBuffer.PublishEvent(eventTranslator, arg0, arg1);
コード例 #22
0
ファイル: Disruptor.cs プロジェクト: zhaojinning/Disruptor
 /// <summary>
 /// Publish an event to the ring buffer.
 /// </summary>
 /// <typeparam name="TArg0">Class of the user supplied argument.</typeparam>
 /// <typeparam name="TArg1">Class of the user supplied argument.</typeparam>
 /// <param name="eventTranslator">the translator that will load data into the event.</param>
 /// <param name="arg0">The first argument to load into the event</param>
 /// <param name="arg1">The second argument to load into the event</param>
 public void PublishEvent <TArg0, TArg1>(IEventTranslatorTwoArg <T, TArg0, TArg1> eventTranslator, TArg0 arg0,
                                         TArg1 arg1)
 {
     _ringBuffer.PublishEvent(eventTranslator, arg0, arg1);
 }
コード例 #23
0
 public LimitOrderMatchingService(
     IOrderBookRepository orderBookRepository,
     IEventTranslatorTwoArg <CancelOrderEvent, OrderMatchReport, SessionID> translator)
     : base(orderBookRepository)
 {
 }