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; }
long offset = ranges[i].getOffset() + baseOffset; assert buffer.declaredCachedLength == LlapDataBuffer.UNKNOWN_CACHED_LENGTH; buffer.declaredCachedLength = ranges[i].getLength();
private void setOffset(List<DiskRange> list) { currentOffset = list.isEmpty() ? 0 : list.get(0).getOffset(); } }
private void setOffset(List<DiskRange> list) { currentOffset = list.isEmpty() ? 0 : list.get(0).getOffset(); } }
if (curRange.getOffset() <= desired && (desired - curRange.getOffset()) < curRange.getLength()) { currentOffset = desired; currentRange = i; this.range = curRange.getData().duplicate(); int pos = range.position(); pos += (int)(desired - curRange.getOffset()); // this is why we duplicate this.range.position(pos); return; this.range = curRange.getData().duplicate(); int pos = range.position(); pos += (int)(desired - curRange.getOffset()); // this is why we duplicate this.range.position(pos); return;
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); }
return; if (curRange.getOffset() <= desired && (desired - curRange.getOffset()) < curRange.getLength()) { currentOffset = desired; currentRange = i; this.range = curRange.getData().duplicate(); int pos = range.position(); pos += (int)(desired - curRange.getOffset()); // this is why we duplicate this.range.position(pos); return; this.range = curRange.getData().duplicate(); int pos = range.position(); pos += (int)(desired - curRange.getOffset()); // this is why we duplicate this.range.position(pos); return;
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); }
long offset = ranges[i].getOffset() + baseOffset; assert buffer.declaredCachedLength == LlapDataBuffer.UNKNOWN_CACHED_LENGTH; buffer.declaredCachedLength = ranges[i].getLength();