@Override void write(PackOutputStream out, long pos, int cnt) throws IOException { final ByteBuffer s = buffer.slice(); s.position((int) (pos - start)); while (0 < cnt) { byte[] buf = out.getCopyBuffer(); int n = Math.min(cnt, buf.length); s.get(buf, 0, n); out.write(buf, 0, n); cnt -= n; } }
private void writeDeltaObjectDeflate(PackOutputStream out, final ObjectToPack otp) throws IOException { writeBase(out, otp.getDeltaBase()); crc32.reset(); otp.setOffset(out.length()); DeltaCache.Ref ref = otp.popCachedDelta(); if (ref != null) { byte[] zbuf = ref.get(); if (zbuf != null) { out.writeHeader(otp, otp.getCachedSize()); out.write(zbuf); typeStats.cntDeltas++; typeStats.deltaBytes += out.length() - otp.getOffset(); return; } } try (TemporaryBuffer.Heap delta = delta(otp)) { out.writeHeader(otp, delta.length()); Deflater deflater = deflater(); deflater.reset(); DeflaterOutputStream dst = new DeflaterOutputStream(out, deflater); delta.writeTo(dst, null); dst.finish(); } typeStats.cntDeltas++; typeStats.deltaBytes += out.length() - otp.getOffset(); }
private void writeObjects(PackOutputStream out, List<ObjectToPack> list) throws IOException { if (list.isEmpty()) return; typeStats = stats.objectTypes[list.get(0).getType()]; long beginOffset = out.length(); if (reuseSupport != null) { reuseSupport.writeObjects(out, list); } else { for (ObjectToPack otp : list) out.writeObject(otp); } typeStats.bytes += out.length() - beginOffset; typeStats.cntObjects = list.size(); }
final PackOutputStream out = new PackOutputStream( writeMonitor, isIndexDisabled() long writeStart = System.currentTimeMillis(); try { out.writeFileHeader(PACK_VERSION_GENERATED, objCnt); out.flush(); out.flush(); } finally { stats.timeWriting = System.currentTimeMillis() - writeStart; stats.totalBytes = out.length(); reader.close(); endPhase(writeMonitor);
final CRC32 crc1 = validate ? new CRC32() : null; final CRC32 crc2 = validate ? new CRC32() : null; final byte[] buf = out.getCopyBuffer(); out.writeHeader(src, inflatedLength); quickCopy.write(out, dataOffset, (int) dataLength); out.writeHeader(src, inflatedLength); out.write(buf, 0, (int) dataLength); } else { out.writeHeader(src, inflatedLength); long pos = dataOffset; long cnt = dataLength; crc2.update(buf, 0, n); out.write(buf, 0, n); pos += n; cnt -= n;
ObjectToPack b = otp.getDeltaBase(); if (b != null && (b.isWritten() & ofsDelta)) { // Non-short-circuit logic is intentional int n = objectHeader(rawLength, OBJ_OFS_DELTA, headerBuffer); n = ofsDelta(count - b.getOffset(), headerBuffer, n); write(headerBuffer, 0, n); } else if (otp.isDeltaRepresentation()) { int n = objectHeader(rawLength, OBJ_REF_DELTA, headerBuffer); otp.getDeltaBaseId().copyRawTo(headerBuffer, n); write(headerBuffer, 0, n + 20); } else { int n = objectHeader(rawLength, otp.getType(), headerBuffer); write(headerBuffer, 0, n);
void write(PackOutputStream out, long pos, int cnt) throws IOException { out.write(block, (int) (pos - start), cnt); }
private void writeWholeObjectDeflate(PackOutputStream out, final ObjectToPack otp) throws IOException { final Deflater deflater = deflater(); final ObjectLoader ldr = reader.open(otp, otp.getType()); crc32.reset(); otp.setOffset(out.length()); out.writeHeader(otp, ldr.getSize()); deflater.reset(); DeflaterOutputStream dst = new DeflaterOutputStream(out, deflater); ldr.copyTo(dst); dst.finish(); }
otp.setOffset(out.length()); try { reuseSupport.copyObjectAsIs(out, otp, reuseValidate); out.endObject(); otp.setCRC((int) crc32.getValue()); typeStats.reusedObjects++; if (otp.isDeltaRepresentation()) { typeStats.reusedDeltas++; typeStats.deltaBytes += out.length() - otp.getOffset(); if (otp.getOffset() == out.length()) { otp.setOffset(0); otp.clearDeltaBase(); else writeWholeObjectDeflate(out, otp); out.endObject(); otp.setCRC((int) crc32.getValue());
asis.selectObjectRepresentation(pw, NullProgressMonitor.INSTANCE, Collections.singleton(target)); asis.copyObjectAsIs(new PackOutputStream(NullProgressMonitor.INSTANCE, buf, pw), target, true);
private ByteBuffer newCopyBuffer(PackOutputStream out, ReadableChannel rc) { int bs = blockSize(rc); byte[] copyBuf = out.getCopyBuffer(); if (bs > copyBuf.length) copyBuf = new byte[bs]; return ByteBuffer.wrap(copyBuf, 0, bs); }
private static final int ofsDelta(long diff, byte[] buf, int p) { p += ofsDeltaVarIntLength(diff); int n = p; buf[--n] = (byte) (diff & 0x7F); while ((diff >>>= 7) != 0) buf[--n] = (byte) (0x80 | (--diff & 0x7F)); return p; }
final PackOutputStream out = new PackOutputStream( writeMonitor, isIndexDisabled() long writeStart = System.currentTimeMillis(); try { out.writeFileHeader(PACK_VERSION_GENERATED, objCnt); out.flush(); out.flush(); } finally { stats.timeWriting = System.currentTimeMillis() - writeStart; stats.totalBytes = out.length(); reader.close(); endPhase(writeMonitor);
final CRC32 crc1 = validate ? new CRC32() : null; final CRC32 crc2 = validate ? new CRC32() : null; final byte[] buf = out.getCopyBuffer(); out.writeHeader(src, inflatedLength); quickCopy.write(out, dataOffset, (int) dataLength); out.writeHeader(src, inflatedLength); out.write(buf, 0, (int) dataLength); } else { out.writeHeader(src, inflatedLength); long pos = dataOffset; long cnt = dataLength; crc2.update(buf, 0, n); out.write(buf, 0, n); pos += n; cnt -= n;
ObjectToPack b = otp.getDeltaBase(); if (b != null && (b.isWritten() & ofsDelta)) { int n = objectHeader(rawLength, OBJ_OFS_DELTA, headerBuffer); n = ofsDelta(count - b.getOffset(), headerBuffer, n); write(headerBuffer, 0, n); } else if (otp.isDeltaRepresentation()) { int n = objectHeader(rawLength, OBJ_REF_DELTA, headerBuffer); otp.getDeltaBaseId().copyRawTo(headerBuffer, n); write(headerBuffer, 0, n + 20); } else { int n = objectHeader(rawLength, otp.getType(), headerBuffer); write(headerBuffer, 0, n);
@Override void write(PackOutputStream out, long pos, int cnt) throws IOException { int ptr = (int) (pos - start); out.write(array, ptr, cnt); }
private void writeWholeObjectDeflate(PackOutputStream out, final ObjectToPack otp) throws IOException { final Deflater deflater = deflater(); final ObjectLoader ldr = reader.open(otp, otp.getType()); crc32.reset(); otp.setOffset(out.length()); out.writeHeader(otp, ldr.getSize()); deflater.reset(); DeflaterOutputStream dst = new DeflaterOutputStream(out, deflater); ldr.copyTo(dst); dst.finish(); }
private void writeObjects(PackOutputStream out, List<ObjectToPack> list) throws IOException { if (list.isEmpty()) return; typeStats = stats.objectTypes[list.get(0).getType()]; long beginOffset = out.length(); if (reuseSupport != null) { reuseSupport.writeObjects(out, list); } else { for (ObjectToPack otp : list) out.writeObject(otp); } typeStats.bytes += out.length() - beginOffset; typeStats.cntObjects = list.size(); }
otp.setOffset(out.length()); try { reuseSupport.copyObjectAsIs(out, otp, reuseValidate); out.endObject(); otp.setCRC((int) crc32.getValue()); typeStats.reusedObjects++; if (otp.isDeltaRepresentation()) { typeStats.reusedDeltas++; typeStats.deltaBytes += out.length() - otp.getOffset(); if (otp.getOffset() == out.length()) { otp.setOffset(0); otp.clearDeltaBase(); else writeWholeObjectDeflate(out, otp); out.endObject(); otp.setCRC((int) crc32.getValue());