public interface FrameProcessor<T>
ReadableFrameChannel and
WritableFrameChannel.
It is designed to enable interleaved non-blocking work on a fixed-size thread pool. Typically, this is done using
an instance of FrameProcessorExecutor.| Modifier and Type | Method and Description |
|---|---|
void |
cleanup()
Closes resources used by this worker.
|
List<ReadableFrameChannel> |
inputChannels()
List of input channels.
|
List<WritableFrameChannel> |
outputChannels()
List of output channels.
|
ReturnOrAwait<T> |
runIncrementally(it.unimi.dsi.fastutil.ints.IntSet readableInputs)
Runs some of the algorithm, without blocking, and either returns a value or a set of input channels
to wait for.
|
List<ReadableFrameChannel> inputChannels()
readableInputs set
provided to runIncrementally(it.unimi.dsi.fastutil.ints.IntSet).List<WritableFrameChannel> outputChannels()
ReturnOrAwait<T> runIncrementally(it.unimi.dsi.fastutil.ints.IntSet readableInputs) throws InterruptedException, IOException
FrameProcessorExecutor.runFully(org.apache.druid.frame.processor.FrameProcessor<T>, java.lang.String) when all output channels are
writable. Therefore, it is guaranteed that each output channel can accept at least one frame.
This method must not read more than one frame from each readable input channel, and must not write more than one
frame to each output channel.readableInputs - channels from inputChannels() that are either finished or ready to read.
That is: either ReadableFrameChannel.isFinished() or
ReadableFrameChannel.canRead() are true.InterruptedExceptionIOExceptionvoid cleanup()
throws IOException
Closeable.close(). This interface does not extend Closeable, in order to
make it easier to find all places where cleanup happens. (Static analysis tools can lose the thread when Closeables
are closed in generic ways.)
Implementations typically call ReadableFrameChannel.close() and
WritableFrameChannel.close() on all input and output channels, as well as releasing any additional
resources that may be held, such as FrameWriter.
In cases of cancellation, this method may be called even if runIncrementally(it.unimi.dsi.fastutil.ints.IntSet) has not yet returned a
result via ReturnOrAwait.returnObject(T).IOExceptionCopyright © 2011–2023 The Apache Software Foundation. All rights reserved.