@Override public String toString() { return "chunk:" + asString(); } }
@Override public String toString() { return "chunk:" + asString(); } }
private void endFragmentedObject() throws DhtException { currChunk.setFragment(); ChunkKey lastKey = endChunk(typeOf(currChunkPtr)); if (lastKey != null) currFragments.add(lastKey); ChunkMeta.Builder protoBuilder = ChunkMeta.newBuilder(); for (ChunkKey key : currFragments) protoBuilder.addFragment(key.asString()); ChunkMeta protoMeta = protoBuilder.build(); for (ChunkKey key : currFragments) { ChunkMeta oldMeta = chunkMeta.get(key); if (oldMeta != null) { ChunkMeta.Builder newMeta = ChunkMeta.newBuilder(oldMeta); newMeta.clearFragment(); newMeta.mergeFrom(protoMeta); ChunkMeta meta = newMeta.build(); dirtyMeta.put(key, meta); chunkMeta.put(key, meta); } else { dirtyMeta.put(key, protoMeta); chunkMeta.put(key, protoMeta); } } currFragments = null; }
private void endFragmentedObject() throws DhtException { currChunk.setFragment(); ChunkKey lastKey = endChunk(typeOf(currChunkPtr)); if (lastKey != null) currFragments.add(lastKey); ChunkMeta.Builder protoBuilder = ChunkMeta.newBuilder(); for (ChunkKey key : currFragments) protoBuilder.addFragment(key.asString()); ChunkMeta protoMeta = protoBuilder.build(); for (ChunkKey key : currFragments) { ChunkMeta oldMeta = chunkMeta.get(key); if (oldMeta != null) { ChunkMeta.Builder newMeta = ChunkMeta.newBuilder(oldMeta); newMeta.clearFragment(); newMeta.mergeFrom(protoMeta); ChunkMeta meta = newMeta.build(); dirtyMeta.put(key, meta); chunkMeta.put(key, meta); } else { dirtyMeta.put(key, protoMeta); chunkMeta.put(key, protoMeta); } } currFragments = null; }
startsAt.put(key.asString(), Long.valueOf(position)); chunk.copyEntireChunkAsIs(out, null, validate);
startsAt.put(key.asString(), Long.valueOf(position)); chunk.copyEntireChunkAsIs(out, null, validate);
ChunkMeta.PrefetchHint.Builder h = m.getCommitPrefetchBuilder(); for (ChunkKey k : e) h.addEdge(k.asString()); for (ChunkKey k : s) h.addSequential(k.asString()); meta = m.build(); ChunkMeta.PrefetchHint.Builder h = m.getTreePrefetchBuilder(); for (ChunkKey k : s) h.addSequential(k.asString()); meta = m.build();
ChunkMeta.PrefetchHint.Builder h = m.getCommitPrefetchBuilder(); for (ChunkKey k : e) h.addEdge(k.asString()); for (ChunkKey k : s) h.addSequential(k.asString()); meta = m.build(); ChunkMeta.PrefetchHint.Builder h = m.getTreePrefetchBuilder(); for (ChunkKey k : s) h.addSequential(k.asString()); meta = m.build();
private byte[] encode(List<ObjectInfo> items) { CachedObjectIndex.Builder b; b = CachedObjectIndex.newBuilder(); for (ObjectInfo info : items) { CachedObjectIndex.Item.Builder i = b.addItemBuilder(); i.setChunkKey(info.getChunkKey().asString()); i.setObjectInfo(info.getData()); if (0 < info.getTime()) i.setTime(info.getTime()); } return b.build().toByteArray(); } });
private byte[] encode(List<ObjectInfo> items) { CachedObjectIndex.Builder b; b = CachedObjectIndex.newBuilder(); for (ObjectInfo info : items) { CachedObjectIndex.Item.Builder i = b.addItemBuilder(); i.setChunkKey(info.getChunkKey().asString()); i.setObjectInfo(info.getData()); if (0 < info.getTime()) i.setTime(info.getTime()); } return b.build().toByteArray(); } });
private RefData newData() throws IOException { RefData.Builder d = RefData.newBuilder(oldData); clearRefData(d); updateSequence(d); ObjectId newId = getNewObjectId(); d.getTargetBuilder().setObjectName(newId.name()); try { DhtReader ctx = (DhtReader) rw.getObjectReader(); RevObject obj = rw.parseAny(newId); ChunkKey oKey = ctx.findChunk(newId); if (oKey != null) d.getTargetBuilder().setChunkKey(oKey.asString()); if (obj instanceof RevTag) { ObjectId pId = rw.peel(obj); ChunkKey pKey = ctx.findChunk(pId); if (pKey != null) d.getPeeledBuilder().setChunkKey(pKey.asString()); d.getPeeledBuilder().setObjectName(pId.name()); } } catch (MissingObjectException e) { // Automatic peeling failed. Ignore the problem and deal with it // during reading later, this is the classical Git behavior on disk. } return d.build(); }
private RefData newData() throws IOException { RefData.Builder d = RefData.newBuilder(oldData); clearRefData(d); updateSequence(d); ObjectId newId = getNewObjectId(); d.getTargetBuilder().setObjectName(newId.name()); try { DhtReader ctx = (DhtReader) rw.getObjectReader(); RevObject obj = rw.parseAny(newId); ChunkKey oKey = ctx.findChunk(newId); if (oKey != null) d.getTargetBuilder().setChunkKey(oKey.asString()); if (obj instanceof RevTag) { ObjectId pId = rw.peel(obj); ChunkKey pKey = ctx.findChunk(pId); if (pKey != null) d.getPeeledBuilder().setChunkKey(pKey.asString()); d.getPeeledBuilder().setObjectName(pId.name()); } } catch (MissingObjectException e) { // Automatic peeling failed. Ignore the problem and deal with it // during reading later, this is the classical Git behavior on disk. } return d.build(); }
BaseChunk.Builder c = BaseChunk.newBuilder(); c.setRelativeStart(b.relativeStart); c.setChunkKey(b.key.asString()); list.add(c.build());
private void addChunkList(CachedPackInfo.Builder info, MessageDigest version, List<ChunkKey> list) { if (list == null) return; long bytesTotal = info.getBytesTotal(); long objectsTotal = info.getObjectsTotal(); long objectsDelta = info.getObjectsDelta(); byte[] buf = new byte[Constants.OBJECT_ID_LENGTH]; for (ChunkKey key : list) { ChunkInfo chunkInfo = infoByKey.get(key); GitStore.ChunkInfo c = chunkInfo.getData(); int len = c.getChunkSize() - ChunkFormatter.TRAILER_SIZE; bytesTotal += len; objectsTotal += c.getObjectCounts().getTotal(); objectsDelta += c.getObjectCounts().getOfsDelta(); objectsDelta += c.getObjectCounts().getRefDelta(); info.getChunkListBuilder().addChunkKey( chunkInfo.getChunkKey().asString()); chunkInfo.getChunkKey().getChunkHash().copyRawTo(buf, 0); version.update(buf); } info.setBytesTotal(bytesTotal); info.setObjectsTotal(objectsTotal); info.setObjectsDelta(objectsDelta); }
private void addChunkList(CachedPackInfo.Builder info, MessageDigest version, List<ChunkKey> list) { if (list == null) return; long bytesTotal = info.getBytesTotal(); long objectsTotal = info.getObjectsTotal(); long objectsDelta = info.getObjectsDelta(); byte[] buf = new byte[Constants.OBJECT_ID_LENGTH]; for (ChunkKey key : list) { ChunkInfo chunkInfo = infoByKey.get(key); GitStore.ChunkInfo c = chunkInfo.getData(); int len = c.getChunkSize() - ChunkFormatter.TRAILER_SIZE; bytesTotal += len; objectsTotal += c.getObjectCounts().getTotal(); objectsDelta += c.getObjectCounts().getOfsDelta(); objectsDelta += c.getObjectCounts().getRefDelta(); info.getChunkListBuilder().addChunkKey( chunkInfo.getChunkKey().asString()); chunkInfo.getChunkKey().getChunkHash().copyRawTo(buf, 0); version.update(buf); } info.setBytesTotal(bytesTotal); info.setObjectsTotal(objectsTotal); info.setObjectsDelta(objectsDelta); }
BaseChunk.Builder c = BaseChunk.newBuilder(); c.setRelativeStart(b.relativeStart); c.setChunkKey(b.key.asString()); list.add(c.build());
metaBuilder.addFragment(k.asString()); ChunkMeta meta = metaBuilder.build();
metaBuilder.addFragment(k.asString()); ChunkMeta meta = metaBuilder.build();
private DhtRef doPeel(final Ref leaf) throws MissingObjectException, IOException { RevWalk rw = new RevWalk(getRepository()); try { DhtReader ctx = (DhtReader) rw.getObjectReader(); RevObject obj = rw.parseAny(leaf.getObjectId()); RefData.Builder d = RefData.newBuilder(((DhtRef) leaf).getRefData()); ChunkKey oKey = ctx.findChunk(leaf.getObjectId()); if (oKey != null) d.getTargetBuilder().setChunkKey(oKey.asString()); else d.getTargetBuilder().clearChunkKey(); if (obj instanceof RevTag) { ObjectId pId = rw.peel(obj); d.getPeeledBuilder().setObjectName(pId.name()); ChunkKey pKey = ctx.findChunk(pId); if (pKey != null) d.getPeeledBuilder().setChunkKey(pKey.asString()); else d.getPeeledBuilder().clearChunkKey(); } else { d.clearPeeled(); } d.setIsPeeled(true); d.setSequence(d.getSequence() + 1); return new DhtObjectIdRef(leaf.getName(), d.build()); } finally { rw.release(); } }
private DhtRef doPeel(final Ref leaf) throws MissingObjectException, IOException { RevWalk rw = new RevWalk(getRepository()); try { DhtReader ctx = (DhtReader) rw.getObjectReader(); RevObject obj = rw.parseAny(leaf.getObjectId()); RefData.Builder d = RefData.newBuilder(((DhtRef) leaf).getRefData()); ChunkKey oKey = ctx.findChunk(leaf.getObjectId()); if (oKey != null) d.getTargetBuilder().setChunkKey(oKey.asString()); else d.getTargetBuilder().clearChunkKey(); if (obj instanceof RevTag) { ObjectId pId = rw.peel(obj); d.getPeeledBuilder().setObjectName(pId.name()); ChunkKey pKey = ctx.findChunk(pId); if (pKey != null) d.getPeeledBuilder().setChunkKey(pKey.asString()); else d.getPeeledBuilder().clearChunkKey(); } else { d.clearPeeled(); } d.setIsPeeled(true); d.setSequence(d.getSequence() + 1); return new DhtObjectIdRef(leaf.getName(), d.build()); } finally { rw.release(); } }