
co.elastic.apm.agent.shaded.jctools.queues.atomic.LinkedAtomicArrayQueueUtil Maven / Gradle / Ivy
package co.elastic.apm.agent.shaded.jctools.queues.atomic;
import java.util.concurrent.atomic.AtomicReferenceArray;
final class LinkedAtomicArrayQueueUtil
{
private LinkedAtomicArrayQueueUtil()
{
}
public static E lvElement(AtomicReferenceArray buffer, int offset)
{
return AtomicReferenceArrayQueue.lvElement(buffer, offset);
}
public static E lpElement(AtomicReferenceArray buffer, int offset)
{
return AtomicReferenceArrayQueue.lpElement(buffer, offset);
}
public static void spElement(AtomicReferenceArray buffer, int offset, E value)
{
AtomicReferenceArrayQueue.spElement(buffer, offset, value);
}
public static void svElement(AtomicReferenceArray buffer, int offset, E value)
{
AtomicReferenceArrayQueue.svElement(buffer, offset, value);
}
static void soElement(AtomicReferenceArray buffer, int offset, Object value)
{
buffer.lazySet(offset, value);
}
static int calcElementOffset(long index, long mask)
{
return (int) (index & mask);
}
static AtomicReferenceArray allocate(int capacity)
{
return new AtomicReferenceArray(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 modifiedCalcElementOffset(long index, long mask)
{
return (int) (index & mask) >> 1;
}
static int nextArrayOffset(AtomicReferenceArray> curr)
{
return length(curr) - 1;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy