Class PackIndexV1

java.lang.Object
org.eclipse.jgit.internal.storage.file.PackIndex
org.eclipse.jgit.internal.storage.file.PackIndexV1
All Implemented Interfaces:
Iterable<PackIndex.MutableEntry>, ObjectIdSet

class PackIndexV1 extends PackIndex
  • Field Details

    • IDX_HDR_LEN

      private static final int IDX_HDR_LEN
      See Also:
    • idxHeader

      private final long[] idxHeader
    • idxdata

      byte[][] idxdata
    • objectCnt

      private long objectCnt
  • Constructor Details

  • Method Details

    • getObjectCount

      public long getObjectCount()
      Obtain the total number of objects described by this index.
      Specified by:
      getObjectCount in class PackIndex
      Returns:
      number of objects in this index, and likewise in the associated pack that this index was generated from.
    • getOffset64Count

      public long getOffset64Count()
      Obtain the total number of objects needing 64 bit offsets.
      Specified by:
      getOffset64Count in class PackIndex
      Returns:
      number of objects in this index using a 64 bit offset; that is an object positioned after the 2 GB position within the file.
    • findLevelOne

      private int findLevelOne(long nthPosition)
    • getLevelTwo

      private int getLevelTwo(long nthPosition, int levelOne)
    • getObjectId

      public ObjectId getObjectId(long nthPosition)
      Get ObjectId for the n-th object entry returned by PackIndex.iterator().

      This method is a constant-time replacement for the following loop:

       Iterator<MutableEntry> eItr = index.iterator();
       int curPosition = 0;
       while (eItr.hasNext() && curPosition++ < nthPosition)
              eItr.next();
       ObjectId result = eItr.next().toObjectId();
       
      Specified by:
      getObjectId in class PackIndex
      Parameters:
      nthPosition - position within the traversal of PackIndex.iterator() that the caller needs the object for. The first returned PackIndex.MutableEntry is 0, the second is 1, etc.
      Returns:
      the ObjectId for the corresponding entry.
    • getOffset

      long getOffset(long nthPosition)
      Description copied from class: PackIndex
      Get offset in a pack for the n-th object entry returned by PackIndex.iterator().
      Specified by:
      getOffset in class PackIndex
      Parameters:
      nthPosition - unsigned 32 bit position within the traversal of PackIndex.iterator() for which the caller needs the offset. The first returned PackIndex.MutableEntry is 0, the second is 1, etc. Positions past 2**31-1 are negative, but still valid.
      Returns:
      the offset in a pack for the corresponding entry.
    • findOffset

      public long findOffset(AnyObjectId objId)
      Locate the file offset position for the requested object.
      Specified by:
      findOffset in class PackIndex
      Parameters:
      objId - name of the object to locate within the pack.
      Returns:
      offset of the object's header and compressed content; -1 if the object does not exist in this index and is thus not stored in the associated pack.
    • findCRC32

      public long findCRC32(AnyObjectId objId)
      Retrieve stored CRC32 checksum of the requested object raw-data (including header).
      Specified by:
      findCRC32 in class PackIndex
      Parameters:
      objId - id of object to look for
      Returns:
      CRC32 checksum of specified object (at 32 less significant bits)
    • hasCRC32Support

      public boolean hasCRC32Support()
      Check whether this index supports (has) CRC32 checksums for objects.
      Specified by:
      hasCRC32Support in class PackIndex
      Returns:
      true if CRC32 is stored, false otherwise
    • iterator

      public Iterator<PackIndex.MutableEntry> iterator()

      Provide iterator that gives access to index entries. Note, that iterator returns reference to mutable object, the same reference in each call - for performance reason. If client needs immutable objects, it must copy returned object on its own.

      Iterator returns objects in SHA-1 lexicographical order.

      Specified by:
      iterator in interface Iterable<PackIndex.MutableEntry>
      Specified by:
      iterator in class PackIndex
    • resolve

      public void resolve(Set<ObjectId> matches, AbbreviatedObjectId id, int matchLimit) throws IOException
      Find objects matching the prefix abbreviation.
      Specified by:
      resolve in class PackIndex
      Parameters:
      matches - set to add any located ObjectIds to. This is an output parameter.
      id - prefix to search for.
      matchLimit - maximum number of results to return. At most this many ObjectIds should be added to matches before returning.
      Throws:
      IOException - the index cannot be read.
    • idOffset

      private static int idOffset(int mid)