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)
|
private boolean isObjectInPack(AnyObjectId id, DfsPackFile pack)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
try (DfsReader reader = new DfsReader(odb)) {
|
try (DfsReader reader = odb.newReader()) {
|
||||||
return pack.hasObject(reader, id);
|
return pack.hasObject(reader, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -530,7 +530,7 @@ public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Reader extends ObjectReader {
|
private class Reader extends ObjectReader {
|
||||||
private final DfsReader ctx = new DfsReader(db);
|
private final DfsReader ctx = db.newReader();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectReader newReader() {
|
public ObjectReader newReader() {
|
||||||
|
@ -647,7 +647,7 @@ private class StreamLoader extends ObjectLoader {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectStream openStream() throws IOException {
|
public ObjectStream openStream() throws IOException {
|
||||||
final DfsReader ctx = new DfsReader(db);
|
final DfsReader ctx = db.newReader();
|
||||||
if (srcPack != packKey) {
|
if (srcPack != packKey) {
|
||||||
try {
|
try {
|
||||||
// Post DfsInserter.flush() use the normal code path.
|
// Post DfsInserter.flush() use the normal code path.
|
||||||
|
|
|
@ -170,7 +170,7 @@ public DfsReaderOptions getReaderOptions() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectReader newReader() {
|
public DfsReader newReader() {
|
||||||
return new DfsReader(this);
|
return new DfsReader(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@
|
||||||
* See the base {@link ObjectReader} documentation for details. Notably, a
|
* See the base {@link ObjectReader} documentation for details. Notably, a
|
||||||
* reader is not thread safe.
|
* 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;
|
private static final int MAX_RESOLVE_MATCHES = 256;
|
||||||
|
|
||||||
/** Temporary buffer large enough for at least one raw object id. */
|
/** 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 DfsPackFile last;
|
||||||
private boolean avoidUnreachable;
|
private boolean avoidUnreachable;
|
||||||
|
|
||||||
DfsReader(DfsObjDatabase db) {
|
/**
|
||||||
|
* Initialize a new DfsReader
|
||||||
|
*
|
||||||
|
* @param db
|
||||||
|
* parent DfsObjDatabase.
|
||||||
|
*/
|
||||||
|
protected DfsReader(DfsObjDatabase db) {
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.streamFileThreshold = db.getReaderOptions().getStreamFileThreshold();
|
this.streamFileThreshold = db.getReaderOptions().getStreamFileThreshold();
|
||||||
}
|
}
|
||||||
|
@ -129,7 +135,7 @@ DeltaBaseCache getDeltaBaseCache() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectReader newReader() {
|
public ObjectReader newReader() {
|
||||||
return new DfsReader(db);
|
return db.newReader();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -99,7 +99,7 @@ public byte[] getCachedBytes() throws LargeObjectException {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectStream openStream() throws MissingObjectException, IOException {
|
public ObjectStream openStream() throws MissingObjectException, IOException {
|
||||||
DfsReader ctx = new DfsReader(db);
|
DfsReader ctx = db.newReader();
|
||||||
InputStream in;
|
InputStream in;
|
||||||
try {
|
try {
|
||||||
in = new PackInputStream(pack, objectOffset + headerLength, ctx);
|
in = new PackInputStream(pack, objectOffset + headerLength, ctx);
|
||||||
|
|
Loading…
Reference in New Issue