Пример #1
0
        public void PublishEvents(IEventTranslatorVarArg <TEvent> translator, int batchStartsAt, int batchSize, params object[][] args)
        {
            CheckBounds(batchStartsAt, batchSize, args);
            var finalSequence = Sequencer.Next(batchSize);

            TranslateAndPublishBatch(translator, batchStartsAt, batchSize, finalSequence, args);
        }
Пример #2
0
 private void TranslateAndPublish(IEventTranslatorVarArg <TEvent> translator, long sequence, params object[] args)
 {
     try
     {
         translator.TranslateTo(Get(sequence), sequence, args);
     }
     finally
     {
         Sequencer.Publish(sequence);
     }
 }
Пример #3
0
 public bool TryPublishEvent(IEventTranslatorVarArg <TEvent> translator, params object[] args)
 {
     try
     {
         Sequencer.TryNext(out long sequence);
         TranslateAndPublish(translator, sequence, args);
         return(true);
     }
     catch (InsufficientCapacityException e)
     {
         return(false);
     }
 }
Пример #4
0
 public bool TryPublishEvents(IEventTranslatorVarArg <TEvent> translator, int batchStartsAt, int batchSize, params object[][] args)
 {
     CheckBounds(args, batchStartsAt, batchSize);
     try
     {
         Sequencer.TryNext(batchSize, out long finalSequence);
         TranslateAndPublishBatch(translator, batchStartsAt, batchSize, finalSequence, args);
         return(true);
     }
     catch (InsufficientCapacityException e)
     {
         return(false);
     }
 }
Пример #5
0
        private void TranslateAndPublishBatch(
            IEventTranslatorVarArg <TEvent> translator, int batchStartsAt,
            int batchSize, long finalSequence, params object[][] args)
        {
            var initialSequence = finalSequence - (batchSize - 1);

            try
            {
                long sequence    = initialSequence;
                var  batchEndsAt = batchStartsAt + batchSize;
                for (int i = batchStartsAt; i < batchEndsAt; i++)
                {
                    translator.TranslateTo(Get(sequence), sequence++, args[i]);
                }
            }
            finally
            {
                Sequencer.Publish(initialSequence, finalSequence);
            }
        }
Пример #6
0
 public bool TryPublishEvents(IEventTranslatorVarArg <TEvent> translator, params object[][] args)
 {
     return(TryPublishEvents(translator, 0, args.Length, args));
 }
Пример #7
0
 public void PublishEvents(IEventTranslatorVarArg <TEvent> translator, params object[][] args)
 {
     PublishEvents(translator, 0, args.Length, args);
 }
Пример #8
0
        public void PublishEvent(IEventTranslatorVarArg <TEvent> translator, params object[] args)
        {
            var sequence = Sequencer.Next();

            TranslateAndPublish(translator, sequence, args);
        }
Пример #9
0
 public void PublishEvent(IEventTranslatorVarArg <TEvent> translator, params object[] args)
 {
     throw new NotImplementedException();
 }
Пример #10
0
 public bool TryPublishEvents(IEventTranslatorVarArg <TEvent> translator, int batchStartsAt, int batchSize, params object[][] args)
 {
     throw new NotImplementedException();
 }