/** * {@inheritDoc} */ @Override public E getOldestElement() { IBufferElement<E> bufferElement = last.get(); if (null != bufferElement) { return bufferElement.getObject(); } return null; }
/** * {@inheritDoc} */ @Override public boolean process(IBufferElement<E> elementToProcess, IBufferElement<E> lastProcessedElement) { // only thread that execute compare and set successfully can perform changes if (lastProcessed.compareAndSet(lastProcessedElement, elementToProcess)) { // perform analysis elementToProcess.calculateAndSetBufferElementSize(atomicBuffer.objectSizes); elementToProcess.setBufferElementState(BufferElementState.ANALYZED); atomicBuffer.addToCurrentSize(elementToProcess.getBufferElementSize(), true); atomicBuffer.elementsAnalyzed.incrementAndGet(); return true; } return false; }
public boolean process(IBufferElement<E> elementToProcess, IBufferElement<E> lastProcessedElement) { if (!elementToProcess.isAnalyzed()) { try { Thread.sleep(atomicBuffer.bufferProperties.getIndexingWaitTime()); try { atomicBuffer.indexingTree.put(elementToProcess.getObject()); elementToProcess.setBufferElementState(BufferElementState.INDEXED);
fragmentSize += newLastElement.getBufferElementSize(); newLastElement.setBufferElementState(BufferElementState.EVICTED); elementsInFragment++; newLastElement = newLastElement.getNextElement();
assertThat(first.isAnalyzed(), is(true)); first = first.getNextElement();
assertThat(first.isIndexed(), is(true)); first = first.getNextElement();
IBufferElement<E> lastProcessedElement = lastProcessed.get(); if ((this.atomicBuffer.emptyBufferElement == this.atomicBuffer.last.get()) || ((this.atomicBuffer.emptyBufferElement != lastProcessedElement) && (this.atomicBuffer.emptyBufferElement == lastProcessedElement.getNextElement()))) { // NOPMD lock.lock(); try { || ((this.atomicBuffer.emptyBufferElement != lastProcessedElement) && (this.atomicBuffer.emptyBufferElement == lastProcessedElement.getNextElement()))) { // NOPMD condition.await(); } else { elementToProcess = this.atomicBuffer.last.get(); } else { elementToProcess = lastProcessElement.getNextElement();
element.setNextElement(emptyBufferElement); currentlyFirst.setNextElement(element);
/** * Test that insertion will be in order. */ @Test public void insertElements() { DefaultData defaultData = mock(DefaultData.class); IBufferElement<DefaultData> element1 = new BufferElement<>(defaultData); IBufferElement<DefaultData> element2 = new BufferElement<>(defaultData); buffer.put(element1); buffer.put(element2); assertThat(buffer.getInsertedElemenets(), is(2L)); assertThat(element1.getNextElement(), is(equalTo(element2))); }
/** * {@inheritDoc} */ @Override public E getNewestElement() { IBufferElement<E> bufferElement = first.get(); if (null != bufferElement) { return bufferElement.getObject(); } return null; }
verify(buffer, times(1)).put(captor.capture()); verifyZeroInteractions(entityManager); assertThat(captor.getValue().getObject(), is(equalTo(((Object) invocationAwareData))));