Package org.apache.druid.frame.channel
Interface ReadableFrameChannel
-
- All Superinterfaces:
AutoCloseable,Closeable
- All Known Implementing Classes:
ComposingReadableFrameChannel,ReadableByteChunksFrameChannel,ReadableConcatFrameChannel,ReadableFileFrameChannel,ReadableInputStreamFrameChannel,ReadableNilFrameChannel
public interface ReadableFrameChannel extends Closeable
Interface for reading a sequence of frames. Supports nonblocking reads through thecanRead()andreadabilityFuture()methods. May be implemented using an in-memory queue, disk file, stream, etc. Channels implementing this interface are used by a single reader; they do not support concurrent reads.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description booleancanRead()Returns whether this channel has a frame or error condition currently available.voidclose()Releases any resources associated with this readable channel.booleanisFinished()Returns whether this channel is finished.Frameread()Returns the next available frame from this channel.com.google.common.util.concurrent.ListenableFuture<?>readabilityFuture()Returns a future that will resolve when eitherisFinished()orcanRead()would return true.
-
-
-
Method Detail
-
isFinished
boolean isFinished()
Returns whether this channel is finished. Finished channels will not generate any further frames or errors. Generally, once you discover that a channel is finished, you should callclose()and then discard it. Note that it is possible for a channel to be unfinished and also have no available frames or errors. This happens when it is not in a ready-for-reading state. SeereadabilityFuture()for details.
-
canRead
boolean canRead()
Returns whether this channel has a frame or error condition currently available. If this method returns true, then you can callread()to retrieve the frame or error. Note that it is possible for a channel to be unfinished and also have no available frames or errors. This happens when it is not in a ready-for-reading state. SeereadabilityFuture()for details.
-
read
Frame read()
Returns the next available frame from this channel. Before calling this method, you should checkcanRead()to ensure there is a frame or error available.- Throws:
NoSuchElementException- if there is no frame currently available
-
readabilityFuture
com.google.common.util.concurrent.ListenableFuture<?> readabilityFuture()
Returns a future that will resolve when eitherisFinished()orcanRead()would return true. The future will never resolve to an exception. If something exceptional has happened, the exception can be retrieved fromread().
-
close
void close()
Releases any resources associated with this readable channel. After calling this, you should not call any other methods on the channel.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
-