C# Class Disruptor.SingleProducerSequencer

Coordinator for claiming sequences for access to a data structure while tracking dependent {@link Sequence}s.

Generally not safe for use from multiple threads as it does not implement any barriers.

Inheritance: SingleProducerSequencerFields
ファイルを表示 Open project: disruptor-net/Disruptor-net Class Usage Examples

Public Methods

Method Description
Claim ( long sequence ) : void

Claim a specific sequence when only one publisher is involved.

GetHighestPublishedSequence ( long nextSequence, long availableSequence ) : long

Get the highest sequence number that can be safely read from the ring buffer. Depending on the implementation of the Sequencer this call may need to scan a number of values in the Sequencer. The scan will range from nextSequence to availableSequence. If there are no available values >= nextSequence the return value will be nextSequence - 1. To work correctly a consumer should pass a value that it 1 higher than the last sequence that was successfully processed.

GetRemainingCapacity ( ) : long

Get the remaining capacity for this sequencer. return The number of slots remaining.

HasAvailableCapacity ( int requiredCapacity ) : bool

Has the buffer got capacity to allocate another sequence. This is a concurrent method so the response should only be taken as an indication of available capacity.

IsAvailable ( long sequence ) : bool

Confirms if a sequence is published and the event is available for use; non-blocking.

Next ( ) : long

Claim the next event in sequence for publishing.

Next ( int n ) : long

Claim the next n events in sequence for publishing. This is for batch event producing. Using batch producing requires a little care and some math. int n = 10; long hi = sequencer.next(n); long lo = hi - (n - 1); for (long sequence = lo; sequence <= hi; sequence++) { // Do work. } sequencer.publish(lo, hi);

Publish ( long sequence ) : void

Publish an event and make it visible to IEventProcessors

Publish ( long lo, long hi ) : void

Batch publish sequences. Called when all of the events have been filled.

SingleProducerSequencer ( int bufferSize, IWaitStrategy waitStrategy ) : System
TryNext ( ) : long

Attempt to claim the next event in sequence for publishing. Will return the number of the slot if there is at leastrequiredCapacity slots available.

TryNext ( int n ) : long

Attempt to claim the next event in sequence for publishing. Will return the number of the slot if there is at least slots available.

Method Details

Claim() public method

Claim a specific sequence when only one publisher is involved.
public Claim ( long sequence ) : void
sequence long sequence to be claimed.
return void

GetHighestPublishedSequence() public method

Get the highest sequence number that can be safely read from the ring buffer. Depending on the implementation of the Sequencer this call may need to scan a number of values in the Sequencer. The scan will range from nextSequence to availableSequence. If there are no available values &gt;= nextSequence the return value will be nextSequence - 1. To work correctly a consumer should pass a value that it 1 higher than the last sequence that was successfully processed.
public GetHighestPublishedSequence ( long nextSequence, long availableSequence ) : long
nextSequence long The sequence to start scanning from.
availableSequence long The sequence to scan to.
return long

GetRemainingCapacity() public method

Get the remaining capacity for this sequencer. return The number of slots remaining.
public GetRemainingCapacity ( ) : long
return long

HasAvailableCapacity() public method

Has the buffer got capacity to allocate another sequence. This is a concurrent method so the response should only be taken as an indication of available capacity.
public HasAvailableCapacity ( int requiredCapacity ) : bool
requiredCapacity int requiredCapacity in the buffer
return bool

IsAvailable() public method

Confirms if a sequence is published and the event is available for use; non-blocking.
public IsAvailable ( long sequence ) : bool
sequence long sequence of the buffer to check
return bool

Next() public method

Claim the next event in sequence for publishing.
public Next ( ) : long
return long

Next() public method

Claim the next n events in sequence for publishing. This is for batch event producing. Using batch producing requires a little care and some math. int n = 10; long hi = sequencer.next(n); long lo = hi - (n - 1); for (long sequence = lo; sequence <= hi; sequence++) { // Do work. } sequencer.publish(lo, hi);
public Next ( int n ) : long
n int the number of sequences to claim
return long

Publish() public method

Publish an event and make it visible to IEventProcessors
public Publish ( long sequence ) : void
sequence long sequence to be published
return void

Publish() public method

Batch publish sequences. Called when all of the events have been filled.
public Publish ( long lo, long hi ) : void
lo long first sequence number to publish
hi long last sequence number to publish
return void

SingleProducerSequencer() public method

public SingleProducerSequencer ( int bufferSize, IWaitStrategy waitStrategy ) : System
bufferSize int
waitStrategy IWaitStrategy
return System

TryNext() public method

Attempt to claim the next event in sequence for publishing. Will return the number of the slot if there is at leastrequiredCapacity slots available.
public TryNext ( ) : long
return long

TryNext() public method

Attempt to claim the next event in sequence for publishing. Will return the number of the slot if there is at least slots available.
public TryNext ( int n ) : long
n int the number of sequences to claim
return long