/** {@inheritDoc} */ @Override public long findOffset(AnyObjectId objId) { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) return -1; return getOffset(levelOne, levelTwo); }
/** {@inheritDoc} */ @Override public long findOffset(AnyObjectId objId) { final int levelOne = objId.getFirstByte(); byte[] data = idxdata[levelOne]; if (data == null) return -1; int high = data.length / (4 + Constants.OBJECT_ID_LENGTH); int low = 0; do { final int mid = (low + high) >>> 1; final int pos = idOffset(mid); final int cmp = objId.compareTo(data, pos); if (cmp < 0) high = mid; else if (cmp == 0) { int b0 = data[pos - 4] & 0xff; int b1 = data[pos - 3] & 0xff; int b2 = data[pos - 2] & 0xff; int b3 = data[pos - 1] & 0xff; return (((long) b0) << 24) | (b1 << 16) | (b2 << 8) | (b3); } else low = mid + 1; } while (low < high); return -1; }
/** {@inheritDoc} */ @Override public long findCRC32(AnyObjectId objId) throws MissingObjectException { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) throw new MissingObjectException(objId.copy(), "unknown"); //$NON-NLS-1$ return NB.decodeUInt32(crc32[levelOne], levelTwo << 2); }
@Override public long findOffset(final AnyObjectId objId) { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) return -1; return getOffset(levelOne, levelTwo); }
/** {@inheritDoc} */ @Override public long findOffset(AnyObjectId objId) { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) return -1; return getOffset(levelOne, levelTwo); }
@Override public long findOffset(final AnyObjectId objId) { final int levelOne = objId.getFirstByte(); byte[] data = idxdata[levelOne]; if (data == null) return -1; int high = data.length / (4 + Constants.OBJECT_ID_LENGTH); int low = 0; do { final int mid = (low + high) >>> 1; final int pos = idOffset(mid); final int cmp = objId.compareTo(data, pos); if (cmp < 0) high = mid; else if (cmp == 0) { int b0 = data[pos - 4] & 0xff; int b1 = data[pos - 3] & 0xff; int b2 = data[pos - 2] & 0xff; int b3 = data[pos - 1] & 0xff; return (((long) b0) << 24) | (b1 << 16) | (b2 << 8) | (b3); } else low = mid + 1; } while (low < high); return -1; }
/** {@inheritDoc} */ @Override public long findOffset(AnyObjectId objId) { final int levelOne = objId.getFirstByte(); byte[] data = idxdata[levelOne]; if (data == null) return -1; int high = data.length / (4 + Constants.OBJECT_ID_LENGTH); int low = 0; do { final int mid = (low + high) >>> 1; final int pos = idOffset(mid); final int cmp = objId.compareTo(data, pos); if (cmp < 0) high = mid; else if (cmp == 0) { int b0 = data[pos - 4] & 0xff; int b1 = data[pos - 3] & 0xff; int b2 = data[pos - 2] & 0xff; int b3 = data[pos - 1] & 0xff; return (((long) b0) << 24) | (b1 << 16) | (b2 << 8) | (b3); } else low = mid + 1; } while (low < high); return -1; }
@Override public long findCRC32(AnyObjectId objId) throws MissingObjectException { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) throw new MissingObjectException(objId.copy(), "unknown"); //$NON-NLS-1$ return NB.decodeUInt32(crc32[levelOne], levelTwo << 2); }
/** {@inheritDoc} */ @Override public long findCRC32(AnyObjectId objId) throws MissingObjectException { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) throw new MissingObjectException(objId.copy(), "unknown"); //$NON-NLS-1$ return NB.decodeUInt32(crc32[levelOne], levelTwo << 2); }
/** * Search for an object in the index. * * @param objId * the object to locate. * @return offset of the object in the corresponding chunk; -1 if not found. */ final int findOffset(AnyObjectId objId) { int hi, lo; if (fanout != null) { int fb = objId.getFirstByte(); lo = fb == 0 ? 0 : fanout[fb - 1]; hi = fanout[fb]; } else { lo = 0; hi = count; } while (lo < hi) { final int mid = (lo + hi) >>> 1; final int cmp = objId.compareTo(indexBuf, idPosition(mid)); if (cmp < 0) hi = mid; else if (cmp == 0) return getOffset(mid); else lo = mid + 1; } return -1; }
/** * Search for an object in the index. * * @param objId * the object to locate. * @return offset of the object in the corresponding chunk; -1 if not found. */ final int findOffset(AnyObjectId objId) { int hi, lo; if (fanout != null) { int fb = objId.getFirstByte(); lo = fb == 0 ? 0 : fanout[fb - 1]; hi = fanout[fb]; } else { lo = 0; hi = count; } while (lo < hi) { final int mid = (lo + hi) >>> 1; final int cmp = objId.compareTo(indexBuf, idPosition(mid)); if (cmp < 0) hi = mid; else if (cmp == 0) return getOffset(mid); else lo = mid + 1; } return -1; }