public void addAll( PrimitiveLongArrayQueue otherQueue ) { while ( !otherQueue.isEmpty() ) { enqueue( otherQueue.dequeue() ); } }
public long[] getIds( int numberOfIds ) { if ( freeIdCount == 0 ) { return PrimitiveLongCollections.EMPTY_LONG_ARRAY; } int reusableIds = (int) min( numberOfIds, freeIdCount ); long[] ids = new long[reusableIds]; int cursor = 0; while ( (cursor < reusableIds) && !freeIds.isEmpty() ) { ids[cursor++] = freeIds.dequeue(); } while ( cursor < reusableIds ) { ids[cursor++] = getIdFromDisk(); } freeIdCount -= reusableIds; return ids; }
public long getId() { long result; if ( freeIds.size() > 0 && aggressiveMode ) { result = freeIds.dequeue(); freeIdCount--; } else { result = getIdFromDisk(); if ( result != NO_RESULT ) { freeIdCount--; } } return result; }
private long flushFreeIds0( ByteBuffer writeBuffer ) throws IOException { channel.position( channel.size() ); writeBuffer.clear(); while ( !freeIds.isEmpty() ) { long id = freeIds.dequeue(); if ( id == NO_RESULT ) { continue; } writeBuffer.putLong( id ); if ( writeBuffer.position() == writeBuffer.capacity() ) { writeBuffer.flip(); channel.writeAll( writeBuffer ); writeBuffer.clear(); } } writeBuffer.flip(); if ( writeBuffer.hasRemaining() ) { channel.writeAll( writeBuffer ); } return channel.position(); }
private long getIdFromDisk() { if ( readFromDisk.isEmpty() ) { readIdBatch(); } if ( !readFromDisk.isEmpty() ) { return readFromDisk.dequeue(); } else { return NO_RESULT; } }
@Test void failToRemoveElementFromNewEmptyQueue() { assertThrows( IllegalStateException.class, () -> createQueue().dequeue() ); }
@Test void offerMoreThenQueueCapacityElements() { PrimitiveLongArrayQueue arrayQueue = createQueue(); for ( int i = 1; i < 1234; i++ ) { arrayQueue.enqueue( i ); } int currentValue = 1; while ( !arrayQueue.isEmpty() ) { assertEquals( currentValue++, arrayQueue.dequeue() ); } }
@Test void tailBeforeHeadCorrectResize() { PrimitiveLongArrayQueue queue = createQueue(); for ( int i = 0; i < 14; i++ ) { queue.enqueue( i ); } for ( int i = 0; i < 10; i++ ) { assertEquals( i, queue.dequeue() ); } for ( int i = 14; i < 34 ; i++ ) { queue.enqueue( i ); } assertEquals( 24, queue.size() ); for ( int j = 10; j < 34; j++ ) { assertEquals( j, queue.dequeue() ); } }
@Test void addRemoveElementKeepQueueEmpty() { PrimitiveLongArrayQueue longArrayQueue = createQueue(); for ( int i = 0; i < 1000; i++ ) { longArrayQueue.enqueue( i ); assertEquals( i, longArrayQueue.dequeue() ); assertTrue( longArrayQueue.isEmpty() ); } }
@Test void tailBeforeHeadCorrectSize() { PrimitiveLongArrayQueue queue = createQueue(); for ( int i = 0; i < 14; i++ ) { queue.enqueue( i ); } for ( int i = 0; i < 10; i++ ) { assertEquals( i, queue.dequeue() ); } for ( int i = 14; i < 24 ; i++ ) { queue.enqueue( i ); } assertEquals( 14, queue.size() ); }
@Test void tailBeforeHeadCorrectIteration() { PrimitiveLongArrayQueue queue = createQueue(); for ( int i = 0; i < 14; i++ ) { queue.enqueue( i ); } for ( int i = 0; i < 10; i++ ) { assertEquals( i, queue.dequeue() ); } for ( int i = 14; i < 24 ; i++ ) { queue.enqueue( i ); } assertEquals( 14, queue.size() ); LongIterator iterator = queue.longIterator(); for ( int j = 10; j < 24; j++ ) { assertTrue( iterator.hasNext() ); assertEquals( j, iterator.next() ); } assertFalse( iterator.hasNext() ); }
@Test void addAllElementsFromOtherQueue() { PrimitiveLongArrayQueue queue = createQueue(); queue.enqueue( 1 ); queue.enqueue( 2 ); PrimitiveLongArrayQueue otherQueue = createQueue(); otherQueue.enqueue( 3 ); otherQueue.enqueue( 4 ); queue.addAll( otherQueue ); assertTrue( otherQueue.isEmpty() ); assertEquals( 0, otherQueue.size() ); assertEquals( 4, queue.size() ); for ( int value = 1; value <= 4; value++ ) { assertEquals( value, queue.dequeue() ); } assertTrue( queue.isEmpty() ); }
public void addAll( PrimitiveLongArrayQueue otherQueue ) { while ( !otherQueue.isEmpty() ) { enqueue( otherQueue.dequeue() ); } }
public long[] getIds( int numberOfIds ) { if ( freeIdCount == 0 ) { return PrimitiveLongCollections.EMPTY_LONG_ARRAY; } int reusableIds = (int) min( numberOfIds, freeIdCount ); long[] ids = new long[reusableIds]; int cursor = 0; while ( (cursor < reusableIds) && !freeIds.isEmpty() ) { ids[cursor++] = freeIds.dequeue(); } while ( cursor < reusableIds ) { ids[cursor++] = getIdFromDisk(); } freeIdCount -= reusableIds; return ids; }
public long getId() { long result; if ( freeIds.size() > 0 && aggressiveMode ) { result = freeIds.dequeue(); freeIdCount--; } else { result = getIdFromDisk(); if ( result != NO_RESULT ) { freeIdCount--; } } return result; }
private long flushFreeIds0( ByteBuffer writeBuffer ) throws IOException { channel.position( channel.size() ); writeBuffer.clear(); while ( !freeIds.isEmpty() ) { long id = freeIds.dequeue(); if ( id == NO_RESULT ) { continue; } writeBuffer.putLong( id ); if ( writeBuffer.position() == writeBuffer.capacity() ) { writeBuffer.flip(); channel.writeAll( writeBuffer ); writeBuffer.clear(); } } writeBuffer.flip(); if ( writeBuffer.hasRemaining() ) { channel.writeAll( writeBuffer ); } return channel.position(); }
private long getIdFromDisk() { if ( readFromDisk.isEmpty() ) { readIdBatch(); } if ( !readFromDisk.isEmpty() ) { return readFromDisk.dequeue(); } else { return NO_RESULT; } }