Package org.apache.derby.impl.jdbc
Class AutoPositioningStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- org.apache.derby.impl.jdbc.BinaryToRawStream
-
- org.apache.derby.impl.jdbc.AutoPositioningStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
final class AutoPositioningStream extends BinaryToRawStream
This Stream is a wrapper for PositionedStoreStream to set the position correctly before performing any operation on it. All the read and skip methods ensure that the PositionedStoreStream is set to right position before actually performing these operations. PositionedStoreStream is accessed within synchronized block to ensure exclusive access to it. This class must be constructed while synchronizing on ConnectionChild.getConnectionSynchronization
-
-
Field Summary
Fields Modifier and Type Field Description private ConnectionChildconChildConnectionChild to get synchronizion objectprivate longposprivate PositionedStoreStreampositionedStream
-
Constructor Summary
Constructors Constructor Description AutoPositioningStream(ConnectionChild conChild, java.io.InputStream in, java.lang.Object parent)Constructs AutoPositioningStream object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intread()Reads a single byte from the underlying stream.intread(byte[] b)Reads a number of bytes from the underlying stream and stores them in the specified byte array.intread(byte[] b, int off, int len)Reads a number of bytes from the underlying stream and stores them in the specified byte array at the specified offset.private voidsetPosition()Checks if positionedStream's position was changed since last used, sets the position to right position if its changed.longskip(long n)Skips up to the specified number of bytes from the underlying stream.-
Methods inherited from class org.apache.derby.impl.jdbc.BinaryToRawStream
getLength
-
-
-
-
Field Detail
-
conChild
private final ConnectionChild conChild
ConnectionChild to get synchronizion object
-
pos
private long pos
-
positionedStream
private final PositionedStoreStream positionedStream
-
-
Constructor Detail
-
AutoPositioningStream
AutoPositioningStream(ConnectionChild conChild, java.io.InputStream in, java.lang.Object parent) throws java.io.IOException
Constructs AutoPositioningStream object. This constructor must be called from block synchronized on conChild.getConnectionSynchronization.- Parameters:
conChild- ConnectionChild to get synchronization object before accessing PositionedStoreStreamin- InputStreamparent- Parent of the stream to prevent it from being gc.- Throws:
java.io.IOException- if an I/O error occurs
-
-
Method Detail
-
read
public int read() throws java.io.IOExceptionReads a single byte from the underlying stream.- Overrides:
readin classjava.io.FilterInputStream- Returns:
- The next byte of data, or -1 if the end of the stream is reached.
- Throws:
java.io.IOException- if an I/O error occurs
-
read
public int read(byte[] b, int off, int len) throws java.io.IOExceptionReads a number of bytes from the underlying stream and stores them in the specified byte array at the specified offset.- Overrides:
readin classjava.io.FilterInputStream- Returns:
- The actual number of bytes read, or -1 if the end of the stream is reached.
- Throws:
java.io.IOException- if an I/O error occurs
-
skip
public long skip(long n) throws java.io.IOExceptionSkips up to the specified number of bytes from the underlying stream.- Overrides:
skipin classjava.io.FilterInputStream- Returns:
- The actual number of bytes skipped.
- Throws:
java.io.IOException- if an I/O error occurs
-
read
public int read(byte[] b) throws java.io.IOExceptionReads a number of bytes from the underlying stream and stores them in the specified byte array.- Overrides:
readin classjava.io.FilterInputStream- Returns:
- The actual number of bytes read, or -1 if the end of the stream is reached.
- Throws:
java.io.IOException- if an I/O error occurs
-
setPosition
private void setPosition() throws java.io.IOExceptionChecks if positionedStream's position was changed since last used, sets the position to right position if its changed.- Throws:
java.io.IOException
-
-