public void freeId( long id ) { freeIds.enqueue( id ); freeIdCount++; if ( freeIds.size() >= batchSize ) { long endPosition = flushFreeIds( ByteBuffer.allocate( batchSize * ID_ENTRY_SIZE ) ); if ( aggressiveMode ) { stackPosition = endPosition; } } }
public long getId() { long result; if ( freeIds.size() > 0 && aggressiveMode ) { result = freeIds.dequeue(); freeIdCount--; } else { result = getIdFromDisk(); if ( result != NO_RESULT ) { freeIdCount--; } } return result; }
@Test void offerLessThenQueueCapacityElements() { PrimitiveLongArrayQueue arrayQueue = createQueue(); for ( int i = 1; i < 16; i++ ) { arrayQueue.enqueue( i ); assertEquals( i, arrayQueue.size() ); } }
@Test void growQueueOnElementOffer() { PrimitiveLongArrayQueue longArrayQueue = createQueue(); for ( int i = 1; i < 1000; i++ ) { longArrayQueue.enqueue( i ); assertEquals( i, longArrayQueue.size() ); } }
@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 emptyQueueAfterClear() { PrimitiveLongArrayQueue queue = createQueue(); queue.enqueue( 2 ); queue.enqueue( 3 ); assertFalse( queue.isEmpty() ); assertEquals( 2, queue.size() ); queue.clear(); assertTrue( queue.isEmpty() ); }
@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() ); }
@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 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() ); }
public void freeId( long id ) { freeIds.enqueue( id ); freeIdCount++; if ( freeIds.size() >= batchSize ) { long endPosition = flushFreeIds( ByteBuffer.allocate( batchSize * ID_ENTRY_SIZE ) ); if ( aggressiveMode ) { stackPosition = endPosition; } } }
public long getId() { long result; if ( freeIds.size() > 0 && aggressiveMode ) { result = freeIds.dequeue(); freeIdCount--; } else { result = getIdFromDisk(); if ( result != NO_RESULT ) { freeIdCount--; } } return result; }