class CachedObjectDirectory extends FileObjectDatabase
ObjectDirectory
.
This class caches the list of loose objects in memory, so the file system is not queried with stat calls.
Modifier and Type | Class and Description |
---|---|
private static class |
CachedObjectDirectory.UnpackedObjectId |
FileObjectDatabase.InsertLooseObjectResult
Modifier and Type | Field and Description |
---|---|
private CachedObjectDirectory[] |
alts |
private ObjectIdOwnerMap<CachedObjectDirectory.UnpackedObjectId> |
unpackedObjects
The set that contains unpacked objects identifiers, it is created when
the cached instance is created.
|
private ObjectDirectory |
wrapped |
Constructor and Description |
---|
CachedObjectDirectory(ObjectDirectory wrapped)
The constructor
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Close any resources held by this database.
|
(package private) java.io.File |
fileFor(AnyObjectId id) |
private ObjectDirectory.AlternateHandle.Id |
getAlternateId() |
(package private) Config |
getConfig() |
(package private) java.io.File |
getDirectory() |
(package private) FS |
getFS() |
(package private) long |
getObjectSize(WindowCursor curs,
AnyObjectId objectId) |
(package private) java.util.Collection<PackFile> |
getPacks() |
(package private) java.util.Set<ObjectId> |
getShallowCommits() |
boolean |
has(AnyObjectId objectId)
Does the requested object exist in this database?
|
private boolean |
has(AnyObjectId objectId,
java.util.Set<ObjectDirectory.AlternateHandle.Id> skips) |
(package private) FileObjectDatabase.InsertLooseObjectResult |
insertUnpackedObject(java.io.File tmp,
ObjectId objectId,
boolean createDuplicate) |
private CachedObjectDirectory[] |
myAlternates() |
ObjectDatabase |
newCachedDatabase()
Create a new cached database instance over this database.
|
(package private) ObjectLoader |
openLooseObject(WindowCursor curs,
AnyObjectId id) |
(package private) ObjectLoader |
openObject(WindowCursor curs,
AnyObjectId objectId) |
private ObjectLoader |
openObject(WindowCursor curs,
AnyObjectId objectId,
java.util.Set<ObjectDirectory.AlternateHandle.Id> skips) |
(package private) PackFile |
openPack(java.io.File pack) |
(package private) void |
resolve(java.util.Set<ObjectId> matches,
AbbreviatedObjectId id) |
private ObjectIdOwnerMap<CachedObjectDirectory.UnpackedObjectId> |
scanLoose() |
(package private) void |
selectObjectRepresentation(PackWriter packer,
ObjectToPack otp,
WindowCursor curs) |
private java.util.Set<ObjectDirectory.AlternateHandle.Id> |
skipMe(java.util.Set<ObjectDirectory.AlternateHandle.Id> skips) |
newInserter, newReader
create, exists, open, open
private ObjectIdOwnerMap<CachedObjectDirectory.UnpackedObjectId> unpackedObjects
private final ObjectDirectory wrapped
private CachedObjectDirectory[] alts
CachedObjectDirectory(ObjectDirectory wrapped)
wrapped
- the wrapped databaseprivate ObjectIdOwnerMap<CachedObjectDirectory.UnpackedObjectId> scanLoose()
public void close()
close
in class ObjectDatabase
public ObjectDatabase newCachedDatabase()
newCachedDatabase
in class ObjectDatabase
java.io.File getDirectory()
getDirectory
in class FileObjectDatabase
java.io.File fileFor(AnyObjectId id)
fileFor
in class FileObjectDatabase
Config getConfig()
getConfig
in class FileObjectDatabase
FS getFS()
getFS
in class FileObjectDatabase
java.util.Set<ObjectId> getShallowCommits() throws java.io.IOException
getShallowCommits
in class FileObjectDatabase
java.io.IOException
private CachedObjectDirectory[] myAlternates()
private java.util.Set<ObjectDirectory.AlternateHandle.Id> skipMe(java.util.Set<ObjectDirectory.AlternateHandle.Id> skips)
void resolve(java.util.Set<ObjectId> matches, AbbreviatedObjectId id) throws java.io.IOException
resolve
in class FileObjectDatabase
java.io.IOException
public boolean has(AnyObjectId objectId) throws java.io.IOException
This is a one-shot call interface which may be faster than allocating a
ObjectDatabase.newReader()
to perform the lookup.
has
in class ObjectDatabase
objectId
- identity of the object to test for existence of.java.io.IOException
- the object store cannot be accessed.private boolean has(AnyObjectId objectId, java.util.Set<ObjectDirectory.AlternateHandle.Id> skips) throws java.io.IOException
java.io.IOException
ObjectLoader openObject(WindowCursor curs, AnyObjectId objectId) throws java.io.IOException
openObject
in class FileObjectDatabase
java.io.IOException
private ObjectLoader openObject(WindowCursor curs, AnyObjectId objectId, java.util.Set<ObjectDirectory.AlternateHandle.Id> skips) throws java.io.IOException
java.io.IOException
long getObjectSize(WindowCursor curs, AnyObjectId objectId) throws java.io.IOException
getObjectSize
in class FileObjectDatabase
java.io.IOException
ObjectLoader openLooseObject(WindowCursor curs, AnyObjectId id) throws java.io.IOException
openLooseObject
in class FileObjectDatabase
java.io.IOException
FileObjectDatabase.InsertLooseObjectResult insertUnpackedObject(java.io.File tmp, ObjectId objectId, boolean createDuplicate) throws java.io.IOException
insertUnpackedObject
in class FileObjectDatabase
java.io.IOException
PackFile openPack(java.io.File pack) throws java.io.IOException
openPack
in class FileObjectDatabase
java.io.IOException
void selectObjectRepresentation(PackWriter packer, ObjectToPack otp, WindowCursor curs) throws java.io.IOException
selectObjectRepresentation
in class FileObjectDatabase
java.io.IOException
java.util.Collection<PackFile> getPacks()
getPacks
in class FileObjectDatabase
private ObjectDirectory.AlternateHandle.Id getAlternateId()