private Snapshot fullyHydrate() { if (spansFileBlockId != null) { FileBlock block; try { block = FileBlock.from(spansFileBlockId); builder.spans(rollingFile.read(block, "{\"rolledOver\":true}")); } catch (InvalidBlockIdFormatException e) { logger.warn(e.getMessage(), e); } } if (coarseMergedStackTreeFileBlockId != null) { FileBlock block; try { block = FileBlock.from(coarseMergedStackTreeFileBlockId); builder.coarseMergedStackTree(rollingFile.read(block, "{\"rolledOver\":true}")); } catch (InvalidBlockIdFormatException e) { logger.warn(e.getMessage(), e); } } if (fineMergedStackTreeFileBlockId != null) { FileBlock block; try { block = FileBlock.from(fineMergedStackTreeFileBlockId); builder.fineMergedStackTree(rollingFile.read(block, "{\"rolledOver\":true}")); } catch (InvalidBlockIdFormatException e) { logger.warn(e.getMessage(), e); } } return builder.build(); }
public void deleteStream(String streamName) throws IOException { if (raFile == null) { throw new IOException("MultiFile closed"); } for (DirectoryBlock block : directoryBlocks) { Long offset = block.removeStream(streamName); if (offset != null) { block.write(raFile); FileBlock file = new FileBlock(offset.longValue()); file.read(raFile); FreeBlock free = new FreeBlock(offset.longValue()); free.write(raFile); freeBlocks.add(free); long next = file.getHeader().getNextBlock(); while (next != 0) { file = new FileBlock(next); file.read(raFile); free = new FreeBlock(next); free.write(raFile); freeBlocks.add(free); next = file.getHeader().getNextBlock(); } break; } } }
/** Parse out and decompress the data part of a fileblock helper function. */ FileBlock parseData(byte buf[]) throws InvalidProtocolBufferException { FileBlock out = FileBlock.newInstance(type, indexdata); Fileformat.Blob blob = Fileformat.Blob.parseFrom(buf); if (blob.hasRaw()) { out.data = blob.getRaw(); } else if (blob.hasZlibData()) { byte buf2[] = new byte[blob.getRawSize()]; Inflater decompresser = new Inflater(); decompresser.setInput(blob.getZlibData().toByteArray()); // decompresser.getRemaining(); try { decompresser.inflate(buf2); } catch (DataFormatException e) { e.printStackTrace(); throw new Error(e); } assert (decompresser.finished()); decompresser.end(); out.data = ByteString.copyFrom(buf2); } return out; }