Package org.apache.druid.frame.channel
Interface ReadableFrameChannel
- All Superinterfaces:
AutoCloseable,Closeable
- All Known Implementing Classes:
ComposingReadableFrameChannel,ReadableByteChunksFrameChannel,ReadableConcatFrameChannel,ReadableFileFrameChannel,ReadableInputStreamFrameChannel,ReadableNilFrameChannel
Interface for reading a sequence of frames. Supports nonblocking reads through the
canRead() and
readabilityFuture() 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
Modifier and TypeMethodDescriptionbooleancanRead()Returns whether this channel has a frame or error condition currently available.voidclose()Releases any resources associated with this readable channel.booleanReturns whether this channel is finished.read()Returns the next available frame from this channel.com.google.common.util.concurrent.ListenableFuture<?> Returns a future that will resolve when eitherisFinished()orcanRead()would return true.
-
Method Details
-
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
-