Class NonReusingBlockResettableIterator<T>
- java.lang.Object
-
- org.apache.flink.runtime.operators.resettable.NonReusingBlockResettableIterator<T>
-
- All Implemented Interfaces:
Iterator<T>,MemoryBlockIterator,ResettableIterator<T>
- Direct Known Subclasses:
ReusingBlockResettableIterator
public class NonReusingBlockResettableIterator<T> extends Object implements ResettableIterator<T>
Implementation of an iterator that fetches a block of data into main memory and offers resettable access to the data in that block.
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanclosedprotected SimpleCollectingOutputViewcollectingViewprotected ArrayList<org.apache.flink.core.memory.MemorySegment>emptySegmentsprotected ArrayList<org.apache.flink.core.memory.MemorySegment>fullSegmentsprotected Iterator<T>inputprotected TleftOverElementstatic org.slf4j.LoggerLOGprotected TnextElementprotected booleannoMoreBlocksprotected intnumRecordsInBufferprotected intnumRecordsReturnedprotected booleanreadPhaseprotected RandomAccessInputViewreadViewprotected org.apache.flink.api.common.typeutils.TypeSerializer<T>serializer
-
Constructor Summary
Constructors Constructor Description NonReusingBlockResettableIterator(MemoryManager memoryManager, Iterator<T> input, org.apache.flink.api.common.typeutils.TypeSerializer<T> serializer, int numPages, AbstractInvokable ownerTask)NonReusingBlockResettableIterator(MemoryManager memoryManager, org.apache.flink.api.common.typeutils.TypeSerializer<T> serializer, int numPages, AbstractInvokable ownerTask)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()This method closes the iterator and releases all resources.protected TgetNextRecord()protected TgetNextRecord(T reuse)booleanhasFurtherInput()Checks, whether the input that is blocked by this iterator, has further elements available.booleanhasNext()Tnext()booleannextBlock()Move the iterator to the next memory block.voidopen()voidremove()voidreopen(Iterator<T> input)voidreset()Resets the iterator.protected booleanwriteNextRecord(T record)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Field Detail
-
LOG
public static final org.slf4j.Logger LOG
-
nextElement
protected T nextElement
-
leftOverElement
protected T leftOverElement
-
readPhase
protected boolean readPhase
-
noMoreBlocks
protected boolean noMoreBlocks
-
readView
protected final RandomAccessInputView readView
-
collectingView
protected final SimpleCollectingOutputView collectingView
-
serializer
protected final org.apache.flink.api.common.typeutils.TypeSerializer<T> serializer
-
numRecordsInBuffer
protected int numRecordsInBuffer
-
numRecordsReturned
protected int numRecordsReturned
-
emptySegments
protected final ArrayList<org.apache.flink.core.memory.MemorySegment> emptySegments
-
fullSegments
protected final ArrayList<org.apache.flink.core.memory.MemorySegment> fullSegments
-
closed
protected volatile boolean closed
-
-
Constructor Detail
-
NonReusingBlockResettableIterator
public NonReusingBlockResettableIterator(MemoryManager memoryManager, Iterator<T> input, org.apache.flink.api.common.typeutils.TypeSerializer<T> serializer, int numPages, AbstractInvokable ownerTask) throws MemoryAllocationException
- Throws:
MemoryAllocationException
-
NonReusingBlockResettableIterator
public NonReusingBlockResettableIterator(MemoryManager memoryManager, org.apache.flink.api.common.typeutils.TypeSerializer<T> serializer, int numPages, AbstractInvokable ownerTask) throws MemoryAllocationException
- Throws:
MemoryAllocationException
-
-
Method Detail
-
reopen
public void reopen(Iterator<T> input) throws IOException
- Throws:
IOException
-
reset
public void reset()
Description copied from interface:ResettableIteratorResets the iterator.- Specified by:
resetin interfaceResettableIterator<T>
-
nextBlock
public boolean nextBlock() throws IOExceptionDescription copied from interface:MemoryBlockIteratorMove the iterator to the next memory block. The next memory block starts at the first element that was not in the block before. A special case is when no record was in the block before, which happens when this function is invoked two times directly in a sequence, without calling hasNext() or next in between. Then the block moves one element.- Specified by:
nextBlockin interfaceMemoryBlockIterator- Returns:
- True if a new memory block was loaded, false if there were no further records and hence no further memory block.
- Throws:
IOException- Thrown, when advancing to the next block failed.
-
hasFurtherInput
public boolean hasFurtherInput()
Checks, whether the input that is blocked by this iterator, has further elements available. This method may be used to forecast (for example at the point where a block is full) whether there will be more data (possibly in another block).- Returns:
- True, if there will be more data, false otherwise.
-
close
public void close()
This method closes the iterator and releases all resources. This method works both as a regular shutdown and as a canceling method. The method may be called multiple times and will not produce an error.
-
open
public void open()
-
writeNextRecord
protected boolean writeNextRecord(T record) throws IOException- Throws:
IOException
-
getNextRecord
protected T getNextRecord(T reuse) throws IOException- Throws:
IOException
-
getNextRecord
protected T getNextRecord() throws IOException- Throws:
IOException
-
-