java.lang.Object
org.sejda.io.BaseSeekableSource
org.sejda.io.SeekableSourceView
- All Implemented Interfaces:
Closeable,AutoCloseable,Channel,ReadableByteChannel,SeekableSource
SeekableSource representing a view over a portion of a parent SeekableSource. A view becomes invalid if the parent SeekableSource is closed. The view
works on a thread local copy of the parent source so the parent position is not modified when a read method is called on the view.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate longprivate final longprivate final longprivate final Supplier<? extends SeekableSource> -
Constructor Summary
ConstructorsConstructorDescriptionSeekableSourceView(Supplier<? extends SeekableSource> supplier, String id, long startingPosition, long length) -
Method Summary
Modifier and TypeMethodDescriptionprivate longvoidclose()private booleanlongposition()position(long newPosition) Sets the source position.intread()Reads a byte of data from this source.intread(ByteBuffer dst) voidlongsize()view(long startingPosition, long length) Cannot create a view of a view.Methods inherited from class org.sejda.io.BaseSeekableSource
id, isOpenMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.sejda.io.SeekableSource
asInputStream, asNewInputStream, back, back, forward, peek, peekBack, reset
-
Field Details
-
startingPosition
private final long startingPosition -
length
private final long length -
currentPosition
private long currentPosition -
supplier
-
-
Constructor Details
-
SeekableSourceView
public SeekableSourceView(Supplier<? extends SeekableSource> supplier, String id, long startingPosition, long length)
-
-
Method Details
-
position
public long position()- Returns:
- the current source position as a positive long
-
position
Description copied from interface:SeekableSourceSets the source position. Setting the position to a value that is greater than the source's size is legal but does not change the size of the source. A later attempt to read bytes at such a position will immediately return an end-of-file indication.- Parameters:
newPosition- a non-negative long for the new position- Returns:
- this source
- Throws:
IOException
-
size
public long size()- Returns:
- The source size, measured in bytes
-
read
- Throws:
IOException
-
read
Description copied from interface:SeekableSourceReads a byte of data from this source. The byte is returned as an integer in the range 0 to 255 (0x00-0xff).- Returns:
- the next byte of data, or
-1if there is no more data. - Throws:
IOException
-
hasAvailable
private boolean hasAvailable() -
available
private long available() -
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceChannel- Specified by:
closein interfaceCloseable- Overrides:
closein classBaseSeekableSource- Throws:
IOException
-
requireOpen
- Specified by:
requireOpenin interfaceSeekableSource- Overrides:
requireOpenin classBaseSeekableSource- Throws:
IOException
-
view
Cannot create a view of a view. This method throwsRuntimeException.- Returns:
- a readable view of a portion of this
SeekableSource. Reading from the view doesn't affect theSeekableSourceposition. Closing theSeekableSourcemakes all the views unreadable but closing the view has no effect on theSeekableSource. A view may or may not work on a thread bound copy of theSeekableSourceso as a general rule it should not be created and handed to other threads. - Throws:
RuntimeException
-