/** Splits current element in the list, using DiskRange::slice. * @param cOffset the position to split the list * @return the split list */ public final DiskRangeList split(long cOffset) { DiskRangeList right = insertAfterInternal((DiskRangeList)this.sliceAndShift(cOffset, end, 0)); DiskRangeList left = replaceSelfWith((DiskRangeList)this.sliceAndShift(offset, cOffset, 0)); checkOrder(left, right, left); // Prev/next are already checked in the calls. return left; }
/** Splits current element in the list, using DiskRange::slice. * @param cOffset the position to split the list * @return the split list */ public final DiskRangeList split(long cOffset) { DiskRangeList right = insertAfterInternal((DiskRangeList)this.sliceAndShift(cOffset, end, 0)); DiskRangeList left = replaceSelfWith((DiskRangeList)this.sliceAndShift(offset, cOffset, 0)); checkOrder(left, right, left); // Prev/next are already checked in the calls. return left; }
if (range.getOffset() < offset) { buffers.add(range.sliceAndShift(offset, Math.min(streamEnd, range.getEnd()), -offset)); if (range.getEnd() >= streamEnd) break; // Partial first buffer is also partial last buffer. range = range.next; buffers.add(range.sliceAndShift(range.getOffset(), streamEnd, -offset)); break; buffers.add(range.sliceAndShift(range.getOffset(), range.getEnd(), -offset)); if (range.getEnd() == streamEnd) break; range = range.next;
if (range.getOffset() < offset) { buffers.add(range.sliceAndShift(offset, Math.min(streamEnd, range.getEnd()), -offset)); if (range.getEnd() >= streamEnd) break; // Partial first buffer is also partial last buffer. range = range.next; buffers.add(range.sliceAndShift(range.getOffset(), streamEnd, -offset)); break; buffers.add(range.sliceAndShift(range.getOffset(), range.getEnd(), -offset)); if (range.getEnd() == streamEnd) break; range = range.next;
if (range.getOffset() < offset) { buffers.add(range.sliceAndShift(offset, Math.min(streamEnd, range.getEnd()), -offset)); if (range.getEnd() >= streamEnd) break; // Partial first buffer is also partial last buffer. range = range.next; buffers.add(range.sliceAndShift(range.getOffset(), streamEnd, -offset)); break; buffers.add(range.sliceAndShift(range.getOffset(), range.getEnd(), -offset)); if (range.getEnd() == streamEnd) break; range = range.next;
if (range.getOffset() < offset) { buffers.add(range.sliceAndShift(offset, Math.min(streamEnd, range.getEnd()), -offset)); if (range.getEnd() >= streamEnd) break; // Partial first buffer is also partial last buffer. range = range.next; buffers.add(range.sliceAndShift(range.getOffset(), streamEnd, -offset)); break; buffers.add(range.sliceAndShift(range.getOffset(), range.getEnd(), -offset)); if (range.getEnd() == streamEnd) break; range = range.next;