Interface ReadChannel
- All Superinterfaces:
AutoCloseable,Channel,Closeable,ReadableByteChannel,Restorable<ReadChannel>
Implementations of this class may buffer data internally to reduce remote calls. This
interface implements Restorable to allow saving the reader's state to continue reading
afterwards.
-
Method Summary
Modifier and TypeMethodDescriptioncapture()Captures the read channel state so that it can be saved and restored afterwards.voidclose()Overridden to remove IOException.default longlimit()The currently defined limit for this channel.default ReadChannellimit(long limit) Limit the maximum number of bytes to be read from the objects content, counting from the beginning of the object, which will be available to read from this channel.voidseek(long position) Set the offset to read from.voidsetChunkSize(int chunkSize) Sets the minimum size that will be read by a single RPC.Methods inherited from interface java.nio.channels.ReadableByteChannel
read
-
Method Details
-
close
void close()Overridden to remove IOException. -
seek
Set the offset to read from.- Throws:
IOException
-
setChunkSize
void setChunkSize(int chunkSize) Sets the minimum size that will be read by a single RPC. Read data will be locally buffered until consumed. -
capture
RestorableState<ReadChannel> capture()Captures the read channel state so that it can be saved and restored afterwards.- Specified by:
capturein interfaceRestorable<ReadChannel>- Returns:
- a
RestorableStateobject that contains the read channel state and can restore it afterwards.
-
limit
Limit the maximum number of bytes to be read from the objects content, counting from the beginning of the object, which will be available to read from this channel. If the limit is larger than the actual size of the content this will have no material impact.If used in conjunction with
seek(long)the total number of returned bytes from this channel will be reduced by the number of bytes specified to seek.The value provided as
limitwill define a left-closed, right-open interval along with either0or any value provided toseek(long), i.e.[seek(long),limit(long)).An example to help illustrate the relationship
Imagine some data[A, B, C, D, E, F, G, H, I, J], 10 bytes total.limit(5)would produce[A, B, C, D, E]seek(8)would produce[I, J]seek(2)limit(5)would produce[C, D, E]seek(3)limit(3)would produce[]
NOTE:Implementers are not required to return a new instance from this method, however they are allowed to. Users of this method should always use the instance returned from this method.
Default Implementation:By default, this method will simply return
this.- Parameters:
limit- the maximum number of bytes to limit this channel to- Returns:
- The instance of channel which will respect the limit.
- Throws:
UnsupportedOperationException- If thethisinstances does not support limiting- Since:
- 2.4.0
-
limit
default long limit()The currently defined limit for this channel. Initial value isLong.MAX_VALUE- Returns:
- the current limit for this channel
- Throws:
UnsupportedOperationException- If thethisinstances does not support limiting- Since:
- 2.4.0
-