ObjectInfo info(ChunkKey chunkKey) { GitStore.ObjectInfo.Builder b = GitStore.ObjectInfo.newBuilder(); b.setObjectType(GitStore.ObjectInfo.ObjectType.valueOf(getType())); b.setOffset(offsetOf(chunkPtr)); b.setPackedSize(packedSize); b.setInflatedSize(inflatedSize); if (base != null) { byte[] t = new byte[Constants.OBJECT_ID_LENGTH]; base.copyRawTo(t, 0); b.setDeltaBase(ByteString.copyFrom(t)); } if (isFragmented()) b.setIsFragmented(true); return new ObjectInfo(chunkKey, b.build()); } }
ObjectInfo info(ChunkKey chunkKey) { GitStore.ObjectInfo.Builder b = GitStore.ObjectInfo.newBuilder(); b.setObjectType(GitStore.ObjectInfo.ObjectType.valueOf(getType())); b.setOffset(offsetOf(chunkPtr)); b.setPackedSize(packedSize); b.setInflatedSize(inflatedSize); if (base != null) { byte[] t = new byte[Constants.OBJECT_ID_LENGTH]; base.copyRawTo(t, 0); b.setDeltaBase(ByteString.copyFrom(t)); } if (isFragmented()) b.setIsFragmented(true); return new ObjectInfo(chunkKey, b.build()); } }
@Override protected void onBeginRefDelta(long deltaPos, AnyObjectId baseId, long inflatedSize) throws IOException { // Try to get the base type, but only if it was seen before in this // pack stream. If not assume worst-case of BLOB type. // int typeCode; DhtInfo baseInfo = objectMap.get(baseId); if (baseInfo != null && baseInfo.isInPack()) { typeCode = baseInfo.getType(); currType = typeCode; } else { typeCode = OBJ_BLOB; currType = -1; } ChunkFormatter w = begin(typeCode); if (!w.refDelta(inflatedSize, baseId)) { endChunk(typeCode); w = begin(typeCode); if (!w.refDelta(inflatedSize, baseId)) throw panicCannotInsert(); } currDataPos = w.position(); currPackedSize = 0; currInflatedSize = inflatedSize; objStreamPos.add(deltaPos); }
@Override protected void onBeginRefDelta(long deltaPos, AnyObjectId baseId, long inflatedSize) throws IOException { // Try to get the base type, but only if it was seen before in this // pack stream. If not assume worst-case of BLOB type. // int typeCode; DhtInfo baseInfo = objectMap.get(baseId); if (baseInfo != null && baseInfo.isInPack()) { typeCode = baseInfo.getType(); currType = typeCode; } else { typeCode = OBJ_BLOB; currType = -1; } ChunkFormatter w = begin(typeCode); if (!w.refDelta(inflatedSize, baseId)) { endChunk(typeCode); w = begin(typeCode); if (!w.refDelta(inflatedSize, baseId)) throw panicCannotInsert(); } currDataPos = w.position(); currPackedSize = 0; currInflatedSize = inflatedSize; objStreamPos.add(deltaPos); }