Package com.lmax.disruptor
Class WorkProcessor<T>
- java.lang.Object
-
- com.lmax.disruptor.WorkProcessor<T>
-
- Type Parameters:
T- event implementation storing the details for the work to processed.
- All Implemented Interfaces:
EventProcessor,java.lang.Runnable
public final class WorkProcessor<T> extends java.lang.Object implements EventProcessor
A
WorkProcessorwraps a singleWorkHandler, effectively consuming the sequence and ensuring appropriate barriers.Generally, this will be used as part of a
WorkerPool.
-
-
Field Summary
Fields Modifier and Type Field Description private EventReleasereventReleaserprivate ExceptionHandler<? super T>exceptionHandlerprivate RingBuffer<T>ringBufferprivate java.util.concurrent.atomic.AtomicBooleanrunningprivate Sequencesequenceprivate SequenceBarriersequenceBarrierprivate TimeoutHandlertimeoutHandlerprivate WorkHandler<? super T>workHandlerprivate SequenceworkSequence
-
Constructor Summary
Constructors Constructor Description WorkProcessor(RingBuffer<T> ringBuffer, SequenceBarrier sequenceBarrier, WorkHandler<? super T> workHandler, ExceptionHandler<? super T> exceptionHandler, Sequence workSequence)Construct aWorkProcessor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SequencegetSequence()Get a reference to theSequencebeing used by thisEventProcessor.voidhalt()Signal that this EventProcessor should stop when it has finished consuming at the next clean break.booleanisRunning()private voidnotifyShutdown()private voidnotifyStart()private voidnotifyTimeout(long availableSequence)voidrun()It is ok to have another thread re-run this method after a halt().
-
-
-
Field Detail
-
running
private final java.util.concurrent.atomic.AtomicBoolean running
-
sequence
private final Sequence sequence
-
ringBuffer
private final RingBuffer<T> ringBuffer
-
sequenceBarrier
private final SequenceBarrier sequenceBarrier
-
workHandler
private final WorkHandler<? super T> workHandler
-
exceptionHandler
private final ExceptionHandler<? super T> exceptionHandler
-
workSequence
private final Sequence workSequence
-
eventReleaser
private final EventReleaser eventReleaser
-
timeoutHandler
private final TimeoutHandler timeoutHandler
-
-
Constructor Detail
-
WorkProcessor
public WorkProcessor(RingBuffer<T> ringBuffer, SequenceBarrier sequenceBarrier, WorkHandler<? super T> workHandler, ExceptionHandler<? super T> exceptionHandler, Sequence workSequence)
Construct aWorkProcessor.- Parameters:
ringBuffer- to which events are published.sequenceBarrier- on which it is waiting.workHandler- is the delegate to which events are dispatched.exceptionHandler- to be called back when an error occursworkSequence- from which to claim the next event to be worked on. It should always be initialised asSequencer.INITIAL_CURSOR_VALUE
-
-
Method Detail
-
getSequence
public Sequence getSequence()
Description copied from interface:EventProcessorGet a reference to theSequencebeing used by thisEventProcessor.- Specified by:
getSequencein interfaceEventProcessor- Returns:
- reference to the
Sequencefor thisEventProcessor
-
halt
public void halt()
Description copied from interface:EventProcessorSignal that this EventProcessor should stop when it has finished consuming at the next clean break. It will callSequenceBarrier.alert()to notify the thread to check status.- Specified by:
haltin interfaceEventProcessor
-
isRunning
public boolean isRunning()
- Specified by:
isRunningin interfaceEventProcessor
-
run
public void run()
It is ok to have another thread re-run this method after a halt().- Specified by:
runin interfacejava.lang.Runnable- Throws:
java.lang.IllegalStateException- if this processor is already running
-
notifyTimeout
private void notifyTimeout(long availableSequence)
-
notifyStart
private void notifyStart()
-
notifyShutdown
private void notifyShutdown()
-
-