org.eclipse.jgit.lib.ObjectReader that supports reusing
objects in packs.
ObjectReader implementations may also optionally implement this
interface to support
org. with a means of
copying an object that is already in pack encoding format directly into the
output stream, without incurring decompression and recompression overheads.
| Modifier and Type | Method and Description |
|---|---|
| public void | copyObjectAsIs(PackOutputStream
stream the object should be written to. out, ObjectToPack the object's saved representation information. otp, boolean if true the representation must be validated and not be
corrupt before being reused. If false, validation may be
skipped as it will be performed elsewhere in the processing
pipeline. validate)Output a previously selected representation. |
| public void | copyPackAsIs(PackOutputStream
stream to append the pack onto. out, CachedPack the cached pack to send. pack)Append an entire pack's contents onto the output stream. |
| public Collection | Returns: the available cached packs.the bitmap that contains all of the objects the client wants. needBitmapObtain the available cached packs that match the bitmap and update the bitmap by removing the items that are in the CachedPack. |
| public ObjectToPack | Returns: a new instance for this object.the id of the object that will be packed. objectId, int the Git type of the object that will be packed. type)Allocate a new |
| public void | selectObjectRepresentation(PackWriter
the packer that will write the object in the near future. packer, ProgressMonitor progress monitor, implementation should update the monitor
once for each item in the iteration when selection is done. monitor, Iterable<ObjectToPack> the objects that are being packed. objects)Select the best object representation for a packer. |
| public void | writeObjects(PackOutputStream
the stream to write each object to. out, List<ObjectToPack> the list of objects to write. Objects should be written in
approximately this order. Implementors may resort the list
elements in-place during writing if desired. list)Write objects to the pack stream in roughly the order given. |
| copyObjectAsIs | back to summary |
|---|---|
| public void copyObjectAsIs(PackOutputStream out, ObjectToPack otp, boolean validate) throws IOException, StoredObjectRepresentationNotAvailableException Output a previously selected representation.
Implementors must write the object header before copying the raw data to the output stream. The typical implementation is like: MyToPack mtp = (MyToPack) otp; byte[] raw; if (validate) raw = validate(mtp); // throw SORNAE here, if at all else raw = readFast(mtp); out.writeHeader(mtp, mtp.inflatedSize); out.write(raw);
| |
| copyPackAsIs | back to summary |
|---|---|
| public void copyPackAsIs(PackOutputStream out, CachedPack pack) throws IOException Append an entire pack's contents onto the output stream. The entire pack, excluding its header and trailing footer is sent.
| |
| getCachedPacksAndUpdate | back to summary |
|---|---|
| public Collection Obtain the available cached packs that match the bitmap and update the bitmap by removing the items that are in the CachedPack. A cached pack has known starting points and may be sent entirely as-is, with almost no effort on the sender's part.
| |
| newObjectToPack | back to summary |
|---|---|
| public ObjectToPack newObjectToPack(AnyObjectId objectId, int type) Allocate a new
| |
| selectObjectRepresentation | back to summary |
|---|---|
| public void selectObjectRepresentation(PackWriter packer, ProgressMonitor monitor, Iterable<ObjectToPack> objects) throws IOException, MissingObjectException Select the best object representation for a packer.
Implementations should iterate through all available representations of
an object, and pass them in turn to the PackWriter though
If the implementation returns CachedPack from
The implementation may choose to consider multiple objects at once on concurrent threads, but must evaluate all representations of an object within the same thread.
| |
| writeObjects | back to summary |
|---|---|
| public void writeObjects(PackOutputStream out, List<ObjectToPack> list) throws IOException Write objects to the pack stream in roughly the order given.
for (ObjectToPack obj : list) out.writeObject(obj)However more sophisticated implementors may try to perform some (small) reordering to access objects that are stored close to each other at roughly the same time. Implementations may choose to write objects out of order, but this may increase pack file size due to using a larger header format to reach a delta base that is later in the stream. It may also reduce data locality for the reader, slowing down data access. Invoking org.
will cause
copyObjectAsIs(PackOutputStream, ObjectToPack, boolean) to be
invoked recursively on this if the current object is scheduled
for reuse.
| |