public void OnEvent(ref PerfValueEvent data, long sequence, bool endOfBatch) { var next = _buffer.Next(); _buffer[next].Value = data.Value; _buffer.Publish(next); }
public void Dispose() { if (_ringBuffer != null) { _ringBuffer.Publish(_startSequence, _endSequence); } }
public void Dispose() { if (_ringBuffer != null) { _ringBuffer.Publish(_sequence); } }
public long Run(ThroughputSessionContext sessionContext) { long expectedCount = _batchEventProcessor.Sequence.Value + _iterations; _latch.Reset(); _eventHandler.Reset(_latch, expectedCount); var processorTask = _executor.Execute(_batchEventProcessor.Run); _batchEventProcessor.WaitUntilStarted(TimeSpan.FromSeconds(5)); sessionContext.Start(); for (long i = 0; i < _iterations; i++) { long sequence = _ringBuffer.Next(); _ringBuffer[sequence].Value = i; _ringBuffer.Publish(sequence); } _latch.WaitOne(); sessionContext.Stop(); PerfTestUtil.WaitForEventProcessorSequence(expectedCount, _batchEventProcessor); _batchEventProcessor.Halt(); processorTask.Wait(2000); sessionContext.SetBatchData(_eventHandler.BatchesProcessedCount.Value, _iterations); PerfTestUtil.FailIfNot(_expectedResult, _eventHandler.Value, $"Handler should have processed {_expectedResult} events, but was: {_eventHandler.Value}"); return(_iterations); }
public void OnEvent(ref StubValueEvent data, long sequence, bool endOfBatch) { if (!endOfBatch) { _ringBuffer.Publish(_ringBuffer.Next()); } _signal.Signal(); }
private void Send() { _t0 = Stopwatch.GetTimestamp(); var next = _buffer.Next(); _buffer[next].Value = _counter; _buffer.Publish(next); _counter++; }
public static void PublishStubEvent(this ValueRingBuffer <StubValueEvent> ringBuffer, int value) { var sequence = ringBuffer.Next(); try { ringBuffer[sequence].Value = value; } finally { ringBuffer.Publish(sequence); } }
public void Dispose() => _ringBuffer.Publish(_startSequence, _endSequence);
public void Dispose() => _ringBuffer.Publish(_sequence);
public void ShouldDelegateNextAndPublish() { _ringBuffer.Publish(_ringBuffer.Next()); }