private void logRange(DiskRange range, int currentOffset) { log[currentOffset] = range.getOffset(); log[currentOffset + 1] = range.getEnd(); log[currentOffset + 2] = range.hasData() ? System.identityHashCode(range.getData()) : 0; }
private String rangeString() { StringBuilder builder = new StringBuilder(); int i = 0; for (DiskRange range : bytes) { if (i != 0) { builder.append("; "); } builder.append(" range " + i + " = " + range.getOffset() + " to " + (range.getEnd() - range.getOffset())); ++i; } return builder.toString(); }
private String rangeString() { StringBuilder builder = new StringBuilder(); int i = 0; for (DiskRange range : bytes) { if (i != 0) { builder.append("; "); } builder.append(" range " + i + " = " + range.getOffset() + " to " + (range.getEnd() - range.getOffset())); ++i; } return builder.toString(); }
private void seek(long desired) throws IOException { if (desired == 0 && bytes.isEmpty()) { return; } int i = 0; for (DiskRange range : bytes) { if (range.getOffset() <= desired && desired < range.getEnd()) { currentRange = i; compressed = range.getData().duplicate(); int pos = compressed.position(); pos += (int)(desired - range.getOffset()); compressed.position(pos); currentOffset = desired; return; } ++i; } // if they are seeking to the precise end, go ahead and let them go there int segments = bytes.size(); if (segments != 0 && desired == bytes.get(segments - 1).getEnd()) { DiskRange range = bytes.get(segments - 1); currentRange = segments - 1; compressed = range.getData().duplicate(); compressed.position(compressed.limit()); currentOffset = desired; return; } throw new IOException("Seek outside of data in " + this + " to " + desired); }
private void seek(long desired) throws IOException { if (desired == 0 && bytes.isEmpty()) { logEmptySeek(name); return; } int i = 0; for (DiskRange range : bytes) { if (range.getOffset() <= desired && desired < range.getEnd()) { currentRange = i; compressed = range.getData().duplicate(); int pos = compressed.position(); pos += (int)(desired - range.getOffset()); compressed.position(pos); currentOffset = desired; return; } ++i; } // if they are seeking to the precise end, go ahead and let them go there int segments = bytes.size(); if (segments != 0 && desired == bytes.get(segments - 1).getEnd()) { DiskRange range = bytes.get(segments - 1); currentRange = segments - 1; compressed = range.getData().duplicate(); compressed.position(compressed.limit()); currentOffset = desired; return; } throw new IOException("Seek outside of data in " + this + " to " + desired); }
if (segments != 0 && desired == bytes.get(segments - 1).getEnd()) { currentOffset = desired; currentRange = segments - 1;
if (segments != 0 && desired == bytes.get(segments - 1).getEnd()) { currentOffset = desired; currentRange = segments - 1;