org.eclipse.jgit.storage.pack
Class DeltaStream
java.lang.Object
java.io.InputStream
org.eclipse.jgit.storage.pack.DeltaStream
- All Implemented Interfaces:
- Closeable
public abstract class DeltaStream
- extends InputStream
Inflates a delta in an incremental way.
Implementations must provide a means to access a stream for the base object.
This stream may be accessed multiple times, in order to randomly position it
to match the copy instructions. A DeltaStream
performs an efficient
skip by only moving through the delta stream, making restarts of stacked
deltas reasonably efficient.
Constructor Summary |
DeltaStream(InputStream deltaStream)
Construct a delta application stream, reading instructions. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DeltaStream
public DeltaStream(InputStream deltaStream)
throws IOException
- Construct a delta application stream, reading instructions.
- Parameters:
deltaStream
- the stream to read delta instructions from.
- Throws:
IOException
- the delta instruction stream cannot be read, or is
inconsistent with the the base object information.
openBase
protected abstract InputStream openBase()
throws IOException
- Open the base stream.
The DeltaStream
may close and reopen the base stream multiple
times if copy instructions use offsets out of order. This can occur if a
large block in the file was moved from near the top, to near the bottom.
In such cases the reopened stream is skipped to the target offset, so
skip(long)
should be as efficient as possible.
- Returns:
- stream to read from the base object. This stream should not be
buffered (or should be only minimally buffered), and does not
need to support mark/reset.
- Throws:
IOException
- the base object cannot be opened for reading.
getBaseSize
protected abstract long getBaseSize()
throws IOException
- Returns:
- length of the base object, in bytes.
- Throws:
IOException
- the length of the base cannot be determined.
getSize
public long getSize()
- Returns:
- total size of this stream, in bytes.
read
public int read()
throws IOException
- Specified by:
read
in class InputStream
- Throws:
IOException
close
public void close()
throws IOException
- Specified by:
close
in interface Closeable
- Overrides:
close
in class InputStream
- Throws:
IOException
skip
public long skip(long len)
throws IOException
- Overrides:
skip
in class InputStream
- Throws:
IOException
read
public int read(byte[] buf,
int off,
int len)
throws IOException
- Overrides:
read
in class InputStream
- Throws:
IOException
Copyright © 2012. All Rights Reserved.