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); }
private void TranslateAndPublish(IEventTranslatorVarArg <TEvent> translator, long sequence, params object[] args) { try { translator.TranslateTo(Get(sequence), sequence, args); } finally { Sequencer.Publish(sequence); } }
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); } }
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); } }
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); } }
public bool TryPublishEvents(IEventTranslatorVarArg <TEvent> translator, params object[][] args) { return(TryPublishEvents(translator, 0, args.Length, args)); }
public void PublishEvents(IEventTranslatorVarArg <TEvent> translator, params object[][] args) { PublishEvents(translator, 0, args.Length, args); }
public void PublishEvent(IEventTranslatorVarArg <TEvent> translator, params object[] args) { var sequence = Sequencer.Next(); TranslateAndPublish(translator, sequence, args); }
public void PublishEvent(IEventTranslatorVarArg <TEvent> translator, params object[] args) { throw new NotImplementedException(); }
public bool TryPublishEvents(IEventTranslatorVarArg <TEvent> translator, int batchStartsAt, int batchSize, params object[][] args) { throw new NotImplementedException(); }