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 boolean
canRead()
Returns whether this channel has a frame or error condition currently available.void
close()
Releases any resources associated with this readable channel.boolean
isFinished()
Returns whether this channel is finished.Frame
read()
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:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
-