Allow DfsReader to be subclassed
Necessary if a DFS implementation wants to override close() to record DfsReaderIoStats. Change-Id: I144575f9bf1abf2c1fd72030550c4f0795fcf44d
This commit is contained in:
parent
562de51239
commit
1513a5632d
|
@ -674,7 +674,7 @@ private static boolean isReachable(Repository repo, AnyObjectId id)
|
|||
|
||||
private boolean isObjectInPack(AnyObjectId id, DfsPackFile pack)
|
||||
throws IOException {
|
||||
try (DfsReader reader = new DfsReader(odb)) {
|
||||
try (DfsReader reader = odb.newReader()) {
|
||||
return pack.hasObject(reader, id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -530,7 +530,7 @@ public void close() throws IOException {
|
|||
}
|
||||
|
||||
private class Reader extends ObjectReader {
|
||||
private final DfsReader ctx = new DfsReader(db);
|
||||
private final DfsReader ctx = db.newReader();
|
||||
|
||||
@Override
|
||||
public ObjectReader newReader() {
|
||||
|
@ -647,7 +647,7 @@ private class StreamLoader extends ObjectLoader {
|
|||
|
||||
@Override
|
||||
public ObjectStream openStream() throws IOException {
|
||||
final DfsReader ctx = new DfsReader(db);
|
||||
final DfsReader ctx = db.newReader();
|
||||
if (srcPack != packKey) {
|
||||
try {
|
||||
// Post DfsInserter.flush() use the normal code path.
|
||||
|
|
|
@ -170,7 +170,7 @@ public DfsReaderOptions getReaderOptions() {
|
|||
}
|
||||
|
||||
@Override
|
||||
public ObjectReader newReader() {
|
||||
public DfsReader newReader() {
|
||||
return new DfsReader(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
* See the base {@link ObjectReader} documentation for details. Notably, a
|
||||
* reader is not thread safe.
|
||||
*/
|
||||
public final class DfsReader extends ObjectReader implements ObjectReuseAsIs {
|
||||
public class DfsReader extends ObjectReader implements ObjectReuseAsIs {
|
||||
private static final int MAX_RESOLVE_MATCHES = 256;
|
||||
|
||||
/** Temporary buffer large enough for at least one raw object id. */
|
||||
|
@ -112,7 +112,13 @@ public final class DfsReader extends ObjectReader implements ObjectReuseAsIs {
|
|||
private DfsPackFile last;
|
||||
private boolean avoidUnreachable;
|
||||
|
||||
DfsReader(DfsObjDatabase db) {
|
||||
/**
|
||||
* Initialize a new DfsReader
|
||||
*
|
||||
* @param db
|
||||
* parent DfsObjDatabase.
|
||||
*/
|
||||
protected DfsReader(DfsObjDatabase db) {
|
||||
this.db = db;
|
||||
this.streamFileThreshold = db.getReaderOptions().getStreamFileThreshold();
|
||||
}
|
||||
|
@ -129,7 +135,7 @@ DeltaBaseCache getDeltaBaseCache() {
|
|||
|
||||
@Override
|
||||
public ObjectReader newReader() {
|
||||
return new DfsReader(db);
|
||||
return db.newReader();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -99,7 +99,7 @@ public byte[] getCachedBytes() throws LargeObjectException {
|
|||
|
||||
@Override
|
||||
public ObjectStream openStream() throws MissingObjectException, IOException {
|
||||
DfsReader ctx = new DfsReader(db);
|
||||
DfsReader ctx = db.newReader();
|
||||
InputStream in;
|
||||
try {
|
||||
in = new PackInputStream(pack, objectOffset + headerLength, ctx);
|
||||
|
|
Loading…
Reference in New Issue