private long nextRangeCandidate() { int offset = currentRangeOffset(); return (offset < length) ? (start + offset) : VALUE_REPRESENTING_NULL; }
@Override public IdRange nextIdBatch( int size ) { int sizeLeft = size; long[] rangeDefrag = EMPTY_LONG_ARRAY; if ( position < defrag.length ) { // There are defragged ids to grab int numberOfDefrags = min( sizeLeft, defrag.length - position ); rangeDefrag = Arrays.copyOfRange( defrag, position, numberOfDefrags + position ); position += numberOfDefrags; sizeLeft -= numberOfDefrags; } long rangeStart = 0; int rangeLength = 0; int rangeOffset = currentRangeOffset(); int rangeAvailable = length - rangeOffset; if ( sizeLeft > 0 && rangeAvailable > 0 ) { rangeStart = start + rangeOffset; rangeLength = min( rangeAvailable, sizeLeft ); position += rangeLength; } return new IdRange( rangeDefrag, rangeStart, rangeLength ); }
private long nextRangeCandidate() { int offset = currentRangeOffset(); return (offset < length) ? (start + offset) : VALUE_REPRESENTING_NULL; }
@Override public IdRange nextIdBatch( int size ) { int sizeLeft = size; long[] rangeDefrag = EMPTY_LONG_ARRAY; if ( position < defrag.length ) { // There are defragged ids to grab int numberOfDefrags = min( sizeLeft, defrag.length - position ); rangeDefrag = Arrays.copyOfRange( defrag, position, numberOfDefrags + position ); position += numberOfDefrags; sizeLeft -= numberOfDefrags; } long rangeStart = 0; int rangeLength = 0; int rangeOffset = currentRangeOffset(); int rangeAvailable = length - rangeOffset; if ( sizeLeft > 0 && rangeAvailable > 0 ) { rangeStart = start + rangeOffset; rangeLength = min( rangeAvailable, sizeLeft ); position += rangeLength; } return new IdRange( rangeDefrag, rangeStart, rangeLength ); }