Example #1
0
        private void TranslateAndPublishBatch <A, B, C>(IEventTranslatorThreeArg <T, A, B, C> translator,
                                                        A[] arg0, B[] arg1, C[] arg2, 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], arg2[i]);
                }
            }
            finally
            {
                _sequencer.Publish(initialSequence, finalSequence);
            }
        }
Example #2
0
        private void TranslateAndPublishBatch <TArg0, TArg1, TArg2>(IEventTranslatorThreeArg <TEvent, TArg0, TArg1, TArg2> translator,
                                                                    TArg0[] arg0, TArg1[] arg1, TArg2[] arg2,
                                                                    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], arg2[i]);
                }
            }
            finally
            {
                Sequencer.Publish(initialSequence, finalSequence);
            }
        }