diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicQueueGenerator.java index ac1576e4..ced3961e 100644 --- a/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicQueueGenerator.java +++ b/jctools-build/src/main/java/org/jctools/queues/atomic/JavaParsingAtomicQueueGenerator.java @@ -245,7 +245,7 @@ public void organiseImports(CompilationUnit cu) { cu.addImport(new ImportDeclaration("java.util.concurrent.atomic", false, true)); cu.addImport(new ImportDeclaration("org.jctools.queues", false, true)); - cu.addImport(staticImportDeclaration(outputPackage() + ".AtomicQueueUtil")); + cu.addImport(staticImportDeclaration("org.jctools.queues.atomic.AtomicQueueUtil")); } protected String capitalise(String s) { diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedArrayQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedArrayQueueGenerator.java index 0d5f7750..64a3b07a 100644 --- a/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedArrayQueueGenerator.java +++ b/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedArrayQueueGenerator.java @@ -1,6 +1,7 @@ package org.jctools.queues.atomic.unpadded; import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.ImportDeclaration; import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; import org.jctools.queues.atomic.JavaParsingAtomicArrayQueueGenerator; @@ -23,6 +24,15 @@ public void cleanupComments(CompilationUnit cu) { cleanupPaddingComments(cu); } + @Override + public void organiseImports(CompilationUnit cu) { + super.organiseImports(cu); + cu.addImport(new ImportDeclaration("org.jctools.queues.atomic.AtomicReferenceArrayQueue", + false, false)); + cu.addImport(new ImportDeclaration("org.jctools.queues.atomic.SequencedAtomicReferenceArrayQueue", + false, false)); + } + @Override public void visit(ClassOrInterfaceDeclaration node, Void arg) { super.visit(node, arg); diff --git a/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedLinkedQueueGenerator.java b/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedLinkedQueueGenerator.java index c9a03939..3e8b8344 100644 --- a/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedLinkedQueueGenerator.java +++ b/jctools-build/src/main/java/org/jctools/queues/atomic/unpadded/JavaParsingAtomicUnpaddedLinkedQueueGenerator.java @@ -1,6 +1,7 @@ package org.jctools.queues.atomic.unpadded; import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.ImportDeclaration; import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; import org.jctools.queues.atomic.JavaParsingAtomicLinkedQueueGenerator; @@ -23,6 +24,13 @@ public void cleanupComments(CompilationUnit cu) { cleanupPaddingComments(cu); } + @Override + public void organiseImports(CompilationUnit cu) { + super.organiseImports(cu); + cu.addImport(new ImportDeclaration("org.jctools.queues.atomic.LinkedQueueAtomicNode", + false, false)); + } + @Override public void visit(ClassOrInterfaceDeclaration node, Void arg) { super.visit(node, arg); diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicQueueUtil.java b/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicQueueUtil.java index 63d559ff..969b06b7 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicQueueUtil.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicQueueUtil.java @@ -1,86 +1,89 @@ package org.jctools.queues.atomic; +import org.jctools.util.InternalAPI; + import java.util.concurrent.atomic.AtomicLongArray; import java.util.concurrent.atomic.AtomicReferenceArray; -final class AtomicQueueUtil +@InternalAPI +public final class AtomicQueueUtil { - static E lvRefElement(AtomicReferenceArray buffer, int offset) + public static E lvRefElement(AtomicReferenceArray buffer, int offset) { return buffer.get(offset); } - static E lpRefElement(AtomicReferenceArray buffer, int offset) + public static E lpRefElement(AtomicReferenceArray buffer, int offset) { return buffer.get(offset); // no weaker form available } - static void spRefElement(AtomicReferenceArray buffer, int offset, E value) + public static void spRefElement(AtomicReferenceArray buffer, int offset, E value) { buffer.lazySet(offset, value); // no weaker form available } - static void soRefElement(AtomicReferenceArray buffer, int offset, Object value) + public static void soRefElement(AtomicReferenceArray buffer, int offset, Object value) { buffer.lazySet(offset, value); } - static void svRefElement(AtomicReferenceArray buffer, int offset, E value) + public static void svRefElement(AtomicReferenceArray buffer, int offset, E value) { buffer.set(offset, value); } - static int calcRefElementOffset(long index) + public static int calcRefElementOffset(long index) { return (int) index; } - static int calcCircularRefElementOffset(long index, long mask) + public static int calcCircularRefElementOffset(long index, long mask) { return (int) (index & mask); } - static AtomicReferenceArray allocateRefArray(int capacity) + public static AtomicReferenceArray allocateRefArray(int capacity) { return new AtomicReferenceArray(capacity); } - static void spLongElement(AtomicLongArray buffer, int offset, long e) + public static void spLongElement(AtomicLongArray buffer, int offset, long e) { buffer.lazySet(offset, e); } - static void soLongElement(AtomicLongArray buffer, int offset, long e) + public static void soLongElement(AtomicLongArray buffer, int offset, long e) { buffer.lazySet(offset, e); } - static long lpLongElement(AtomicLongArray buffer, int offset) + public static long lpLongElement(AtomicLongArray buffer, int offset) { return buffer.get(offset); } - static long lvLongElement(AtomicLongArray buffer, int offset) + public static long lvLongElement(AtomicLongArray buffer, int offset) { return buffer.get(offset); } - static int calcLongElementOffset(long index) + public static int calcLongElementOffset(long index) { return (int) index; } - static int calcCircularLongElementOffset(long index, int mask) + public static int calcCircularLongElementOffset(long index, int mask) { return (int) (index & mask); } - static AtomicLongArray allocateLongArray(int capacity) + public static AtomicLongArray allocateLongArray(int capacity) { return new AtomicLongArray(capacity); } - static int length(AtomicReferenceArray buf) + public static int length(AtomicReferenceArray buf) { return buf.length(); } @@ -88,12 +91,12 @@ static int length(AtomicReferenceArray buf) /** * This method assumes index is actually (index << 1) because lower bit is used for resize hence the >> 1 */ - static int modifiedCalcCircularRefElementOffset(long index, long mask) + public static int modifiedCalcCircularRefElementOffset(long index, long mask) { return (int) (index & mask) >> 1; } - static int nextArrayOffset(AtomicReferenceArray curr) + public static int nextArrayOffset(AtomicReferenceArray curr) { return length(curr) - 1; } diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicReferenceArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicReferenceArrayQueue.java index 5753eda1..05bf6fd5 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicReferenceArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/AtomicReferenceArrayQueue.java @@ -18,6 +18,7 @@ import org.jctools.queues.MessagePassingQueue; import org.jctools.queues.QueueProgressIndicators; import org.jctools.queues.SupportsIterator; +import org.jctools.util.InternalAPI; import org.jctools.util.Pow2; import java.util.AbstractQueue; @@ -27,7 +28,8 @@ import static org.jctools.queues.atomic.AtomicQueueUtil.*; -abstract class AtomicReferenceArrayQueue extends AbstractQueue implements IndexedQueue, QueueProgressIndicators, MessagePassingQueue, SupportsIterator +@InternalAPI +public abstract class AtomicReferenceArrayQueue extends AbstractQueue implements IndexedQueue, QueueProgressIndicators, MessagePassingQueue, SupportsIterator { protected final AtomicReferenceArray buffer; protected final int mask; diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/LinkedQueueAtomicNode.java b/jctools-core/src/main/java/org/jctools/queues/atomic/LinkedQueueAtomicNode.java index 33386833..e84378eb 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/LinkedQueueAtomicNode.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/LinkedQueueAtomicNode.java @@ -13,19 +13,22 @@ */ package org.jctools.queues.atomic; +import org.jctools.util.InternalAPI; + import java.util.concurrent.atomic.AtomicReference; +@InternalAPI public final class LinkedQueueAtomicNode extends AtomicReference> { /** */ private static final long serialVersionUID = 2404266111789071508L; private E value; - LinkedQueueAtomicNode() + public LinkedQueueAtomicNode() { } - LinkedQueueAtomicNode(E val) + public LinkedQueueAtomicNode(E val) { spValue(val); } diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/SequencedAtomicReferenceArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/SequencedAtomicReferenceArrayQueue.java index c54eed25..eb0ccfed 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/SequencedAtomicReferenceArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/SequencedAtomicReferenceArrayQueue.java @@ -13,9 +13,12 @@ */ package org.jctools.queues.atomic; +import org.jctools.util.InternalAPI; + import java.util.concurrent.atomic.AtomicLongArray; -abstract class SequencedAtomicReferenceArrayQueue extends +@InternalAPI +public abstract class SequencedAtomicReferenceArrayQueue extends AtomicReferenceArrayQueue { protected final AtomicLongArray sequenceBuffer; diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/AtomicQueueUtil.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/AtomicQueueUtil.java deleted file mode 100644 index a12980d2..00000000 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/AtomicQueueUtil.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.jctools.queues.atomic.unpadded; - -import java.util.concurrent.atomic.AtomicLongArray; -import java.util.concurrent.atomic.AtomicReferenceArray; - -final class AtomicQueueUtil -{ - static E lvRefElement(AtomicReferenceArray buffer, int offset) - { - return buffer.get(offset); - } - - static E lpRefElement(AtomicReferenceArray buffer, int offset) - { - return buffer.get(offset); // no weaker form available - } - - static void spRefElement(AtomicReferenceArray buffer, int offset, E value) - { - buffer.lazySet(offset, value); // no weaker form available - } - - static void soRefElement(AtomicReferenceArray buffer, int offset, Object value) - { - buffer.lazySet(offset, value); - } - - static void svRefElement(AtomicReferenceArray buffer, int offset, E value) - { - buffer.set(offset, value); - } - - static int calcRefElementOffset(long index) - { - return (int) index; - } - - static int calcCircularRefElementOffset(long index, long mask) - { - return (int) (index & mask); - } - - static AtomicReferenceArray allocateRefArray(int capacity) - { - return new AtomicReferenceArray(capacity); - } - - static void spLongElement(AtomicLongArray buffer, int offset, long e) - { - buffer.lazySet(offset, e); - } - - static void soLongElement(AtomicLongArray buffer, int offset, long e) - { - buffer.lazySet(offset, e); - } - - static long lpLongElement(AtomicLongArray buffer, int offset) - { - return buffer.get(offset); - } - - static long lvLongElement(AtomicLongArray buffer, int offset) - { - return buffer.get(offset); - } - - static int calcLongElementOffset(long index) - { - return (int) index; - } - - static int calcCircularLongElementOffset(long index, int mask) - { - return (int) (index & mask); - } - - static AtomicLongArray allocateLongArray(int capacity) - { - return new AtomicLongArray(capacity); - } - - static int length(AtomicReferenceArray buf) - { - return buf.length(); - } - - /** - * This method assumes index is actually (index << 1) because lower bit is used for resize hence the >> 1 - */ - static int modifiedCalcCircularRefElementOffset(long index, long mask) - { - return (int) (index & mask) >> 1; - } - - static int nextArrayOffset(AtomicReferenceArray curr) - { - return length(curr) - 1; - } - -} diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/AtomicReferenceArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/AtomicReferenceArrayQueue.java deleted file mode 100644 index 155c1f48..00000000 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/AtomicReferenceArrayQueue.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jctools.queues.atomic.unpadded; - -import org.jctools.queues.IndexedQueueSizeUtil; -import org.jctools.queues.IndexedQueueSizeUtil.IndexedQueue; -import org.jctools.queues.MessagePassingQueue; -import org.jctools.queues.QueueProgressIndicators; -import org.jctools.queues.SupportsIterator; -import org.jctools.util.Pow2; - -import java.util.AbstractQueue; -import java.util.Iterator; -import java.util.NoSuchElementException; -import java.util.concurrent.atomic.AtomicReferenceArray; - -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.calcCircularRefElementOffset; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.lvRefElement; - -abstract class AtomicReferenceArrayQueue extends AbstractQueue implements IndexedQueue, QueueProgressIndicators, MessagePassingQueue, SupportsIterator -{ - protected final AtomicReferenceArray buffer; - protected final int mask; - - public AtomicReferenceArrayQueue(int capacity) - { - int actualCapacity = Pow2.roundToPowerOfTwo(capacity); - this.mask = actualCapacity - 1; - this.buffer = new AtomicReferenceArray(actualCapacity); - } - - @Override - public String toString() - { - return this.getClass().getName(); - } - - @Override - public void clear() - { - while (poll() != null) - { - // toss it away - } - } - - @Override - public final int capacity() - { - return (int) (mask + 1); - } - - /** - * {@inheritDoc} - *

- */ - @Override - public final int size() - { - return IndexedQueueSizeUtil.size(this, IndexedQueueSizeUtil.PLAIN_DIVISOR); - } - - @Override - public final boolean isEmpty() - { - return IndexedQueueSizeUtil.isEmpty(this); - } - - @Override - public final long currentProducerIndex() - { - return lvProducerIndex(); - } - - @Override - public final long currentConsumerIndex() - { - return lvConsumerIndex(); - } - - /** - * Get an iterator for this queue. This method is thread safe. - *

- * The iterator provides a best-effort snapshot of the elements in the queue. - * The returned iterator is not guaranteed to return elements in queue order, - * and races with the consumer thread may cause gaps in the sequence of returned elements. - * Like {link #relaxedPoll}, the iterator may not immediately return newly inserted elements. - * - * @return The iterator. - */ - @Override - public final Iterator iterator() { - final long cIndex = lvConsumerIndex(); - final long pIndex = lvProducerIndex(); - - return new WeakIterator(cIndex, pIndex, mask, buffer); - } - - private static class WeakIterator implements Iterator { - - private final long pIndex; - private final int mask; - private final AtomicReferenceArray buffer; - private long nextIndex; - private E nextElement; - - WeakIterator(long cIndex, long pIndex, int mask, AtomicReferenceArray buffer) { - this.nextIndex = cIndex; - this.pIndex = pIndex; - this.mask = mask; - this.buffer = buffer; - nextElement = getNext(); - } - - @Override - public void remove() { - throw new UnsupportedOperationException("remove"); - } - - @Override - public boolean hasNext() { - return nextElement != null; - } - - @Override - public E next() { - final E e = nextElement; - if (e == null) - throw new NoSuchElementException(); - nextElement = getNext(); - return e; - } - - private E getNext() { - final int mask = this.mask; - final AtomicReferenceArray buffer = this.buffer; - while (nextIndex < pIndex) { - int offset = calcCircularRefElementOffset(nextIndex++, mask); - E e = lvRefElement(buffer, offset); - if (e != null) { - return e; - } - } - return null; - } - } -} diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseLinkedAtomicUnpaddedQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseLinkedAtomicUnpaddedQueue.java index 55d0962a..8dc4abe7 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseLinkedAtomicUnpaddedQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseLinkedAtomicUnpaddedQueue.java @@ -18,7 +18,8 @@ import java.util.Queue; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseMpscLinkedAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseMpscLinkedAtomicUnpaddedArrayQueue.java index f78019ad..d28b11ae 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseMpscLinkedAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseMpscLinkedAtomicUnpaddedArrayQueue.java @@ -22,7 +22,8 @@ import java.util.NoSuchElementException; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseSpscLinkedAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseSpscLinkedAtomicUnpaddedArrayQueue.java index fd49e5f7..7f30e4b6 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseSpscLinkedAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/BaseSpscLinkedAtomicUnpaddedArrayQueue.java @@ -19,7 +19,8 @@ import java.util.Iterator; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/LinkedQueueAtomicNode.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/LinkedQueueAtomicNode.java deleted file mode 100644 index fa923e6a..00000000 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/LinkedQueueAtomicNode.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jctools.queues.atomic.unpadded; - -import java.util.concurrent.atomic.AtomicReference; - -public final class LinkedQueueAtomicNode extends AtomicReference> -{ - /** */ - private static final long serialVersionUID = 2404266111789071508L; - private E value; - - LinkedQueueAtomicNode() - { - } - - LinkedQueueAtomicNode(E val) - { - spValue(val); - } - - /** - * Gets the current value and nulls out the reference to it from this node. - * - * @return value - */ - public E getAndNullValue() - { - E temp = lpValue(); - spValue(null); - return temp; - } - - public E lpValue() - { - return value; - } - - public void spValue(E newValue) - { - value = newValue; - } - - public void soNext(LinkedQueueAtomicNode n) - { - lazySet(n); - } - - public void spNext(LinkedQueueAtomicNode n) - { - lazySet(n); - } - - public LinkedQueueAtomicNode lvNext() - { - return get(); - } -} diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpmcAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpmcAtomicUnpaddedArrayQueue.java index 4f3b8a37..c62f5895 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpmcAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpmcAtomicUnpaddedArrayQueue.java @@ -16,7 +16,9 @@ import org.jctools.util.RangeUtil; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.AtomicReferenceArrayQueue; +import org.jctools.queues.atomic.SequencedAtomicReferenceArrayQueue; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedArrayQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscAtomicUnpaddedArrayQueue.java index 89bb6edd..99947007 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscAtomicUnpaddedArrayQueue.java @@ -15,7 +15,9 @@ import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.AtomicReferenceArrayQueue; +import org.jctools.queues.atomic.SequencedAtomicReferenceArrayQueue; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedArrayQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscChunkedAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscChunkedAtomicUnpaddedArrayQueue.java index a0adb4c1..c22d657e 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscChunkedAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscChunkedAtomicUnpaddedArrayQueue.java @@ -20,7 +20,8 @@ import static org.jctools.util.Pow2.roundToPowerOfTwo; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscGrowableAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscGrowableAtomicUnpaddedArrayQueue.java index 6da2ae7f..e7093874 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscGrowableAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscGrowableAtomicUnpaddedArrayQueue.java @@ -17,7 +17,8 @@ import org.jctools.util.RangeUtil; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscLinkedAtomicUnpaddedQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscLinkedAtomicUnpaddedQueue.java index b9741845..4f86d17e 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscLinkedAtomicUnpaddedQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscLinkedAtomicUnpaddedQueue.java @@ -16,7 +16,8 @@ import java.util.Queue; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscUnboundedAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscUnboundedAtomicUnpaddedArrayQueue.java index 7b6e657f..94a39d07 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscUnboundedAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/MpscUnboundedAtomicUnpaddedArrayQueue.java @@ -15,7 +15,8 @@ import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SequencedAtomicReferenceArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SequencedAtomicReferenceArrayQueue.java deleted file mode 100644 index c9a2a514..00000000 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SequencedAtomicReferenceArrayQueue.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jctools.queues.atomic.unpadded; - -import java.util.concurrent.atomic.AtomicLongArray; - -abstract class SequencedAtomicReferenceArrayQueue extends - AtomicReferenceArrayQueue -{ - protected final AtomicLongArray sequenceBuffer; - - public SequencedAtomicReferenceArrayQueue(int capacity) - { - super(capacity); - int actualCapacity = this.mask + 1; - // pad data on either end with some empty slots. - sequenceBuffer = new AtomicLongArray(actualCapacity); - for (int i = 0; i < actualCapacity; i++) - { - soSequence(sequenceBuffer, i, i); - } - } - - protected final long calcSequenceOffset(long index) - { - return calcSequenceOffset(index, mask); - } - - protected static int calcSequenceOffset(long index, int mask) - { - return (int) index & mask; - } - - protected final void soSequence(AtomicLongArray buffer, int offset, long e) - { - buffer.lazySet(offset, e); - } - - protected final long lvSequence(AtomicLongArray buffer, int offset) - { - return buffer.get(offset); - } - -} diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpmcAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpmcAtomicUnpaddedArrayQueue.java index 1592a2e2..5d690f7b 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpmcAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpmcAtomicUnpaddedArrayQueue.java @@ -15,7 +15,9 @@ import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.AtomicReferenceArrayQueue; +import org.jctools.queues.atomic.SequencedAtomicReferenceArrayQueue; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedArrayQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscAtomicUnpaddedArrayQueue.java index 0257de6c..dfc49189 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscAtomicUnpaddedArrayQueue.java @@ -16,7 +16,9 @@ import org.jctools.util.SpscLookAheadUtil; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.AtomicReferenceArrayQueue; +import org.jctools.queues.atomic.SequencedAtomicReferenceArrayQueue; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedArrayQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscChunkedAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscChunkedAtomicUnpaddedArrayQueue.java index 99016af0..6467bc96 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscChunkedAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscChunkedAtomicUnpaddedArrayQueue.java @@ -17,7 +17,8 @@ import org.jctools.util.RangeUtil; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscGrowableAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscGrowableAtomicUnpaddedArrayQueue.java index 60329de6..b08a0d45 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscGrowableAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscGrowableAtomicUnpaddedArrayQueue.java @@ -18,7 +18,8 @@ import org.jctools.util.SpscLookAheadUtil; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscLinkedAtomicUnpaddedQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscLinkedAtomicUnpaddedQueue.java index 4e5fd9c4..db1c586a 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscLinkedAtomicUnpaddedQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscLinkedAtomicUnpaddedQueue.java @@ -15,7 +15,8 @@ import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator diff --git a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscUnboundedAtomicUnpaddedArrayQueue.java b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscUnboundedAtomicUnpaddedArrayQueue.java index aaa0bb6d..a47fb124 100644 --- a/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscUnboundedAtomicUnpaddedArrayQueue.java +++ b/jctools-core/src/main/java/org/jctools/queues/atomic/unpadded/SpscUnboundedAtomicUnpaddedArrayQueue.java @@ -16,7 +16,8 @@ import org.jctools.util.Pow2; import java.util.concurrent.atomic.*; import org.jctools.queues.*; -import static org.jctools.queues.atomic.unpadded.AtomicQueueUtil.*; +import static org.jctools.queues.atomic.AtomicQueueUtil.*; +import org.jctools.queues.atomic.LinkedQueueAtomicNode; /** * NOTE: This class was automatically generated by org.jctools.queues.atomic.unpadded.JavaParsingAtomicUnpaddedLinkedQueueGenerator