public void Should_return_correct_values_for_claim() { var blockingWaitStrategy = new BlockingWaitStrategy(); var writer = new RingBufferWriter(5, blockingWaitStrategy); var first = writer.Claim(); var second = writer.Claim(); Assert.That(first, Is.EqualTo(0)); Assert.That(second, Is.EqualTo(1)); }
public void Should_return_correct_values_for_multiclaim() { var blockingWaitStrategy = new BlockingWaitStrategy(); var writer = new RingBufferWriter(5, blockingWaitStrategy); var first = writer.Claim(3); var second = writer.Claim(4); Assert.That(first, Is.EqualTo(2)); Assert.That(second, Is.EqualTo(6)); }
public OneWriterManyReadersOneReader(uint bufferPower, int maxSequenceValue, bool delay) { _maxSequenceValue = maxSequenceValue; _delay = delay; _buffer = new RingBuffer <int>(bufferPower); _waitStrategy = new BlockingWaitStrategy(); // init _committer = new RingBufferWriter(_buffer.Size, _waitStrategy); _journaler = new RingBufferReader(_waitStrategy); _replicator = new RingBufferReader(_waitStrategy); _processor = new RingBufferReader(_waitStrategy); // setup _committer.DependsOn(_processor); _journaler.DependsOn(_committer); _replicator.DependsOn(_committer); _processor.DependsOn(_journaler, _replicator); }