Class OffHeapFixedMessageSizeRingBuffer

    • Field Detail

      • WRITE_RELEASE_INDICATOR

        public static final int WRITE_RELEASE_INDICATOR
        See Also:
        Constant Field Values
      • WRITE_ACQUIRE_INDICATOR

        public static final int WRITE_ACQUIRE_INDICATOR
        See Also:
        Constant Field Values
      • MESSAGE_INDICATOR_SIZE

        public static final byte MESSAGE_INDICATOR_SIZE
        See Also:
        Constant Field Values
      • HEADER_SIZE

        public static final int HEADER_SIZE
      • bufferAddress

        protected final long bufferAddress
      • consumerIndexAddress

        protected final long consumerIndexAddress
      • producerIndexAddress

        protected final long producerIndexAddress
      • mask

        protected final long mask
      • messageSize

        protected final int messageSize
      • references

        protected final Object[] references
      • referenceMessageSize

        protected final int referenceMessageSize
    • Constructor Detail

      • OffHeapFixedMessageSizeRingBuffer

        public OffHeapFixedMessageSizeRingBuffer​(int capacity,
                                                 int primitiveMessageSize,
                                                 int referenceMessageSize)
      • OffHeapFixedMessageSizeRingBuffer

        protected OffHeapFixedMessageSizeRingBuffer​(ByteBuffer buff,
                                                    int capacity,
                                                    boolean isProducer,
                                                    boolean isConsumer,
                                                    boolean initialize,
                                                    int primitiveMessageSize,
                                                    Object[] references,
                                                    int referenceMessageSize)
        This is to be used for an IPC queue with the direct buffer used being a memory mapped file.
        Parameters:
        buff -
        capacity - in messages, actual capacity will be
        primitiveMessageSize -
    • Method Detail

      • getRequiredBufferSize

        public static int getRequiredBufferSize​(int capacity,
                                                int messageSize)
      • createReferenceArray

        protected static Object[] createReferenceArray​(int capacity,
                                                       int referenceMessageSize)
      • getRequiredArraySize

        public static int getRequiredArraySize​(int capacity,
                                               int primitiveMessageSize)
      • capacity

        public final int capacity()
      • size

        public final int size()
      • isEmpty

        public final boolean isEmpty()
      • isReadReleased

        protected final boolean isReadReleased​(long offset)
      • writeReleaseState

        protected final void writeReleaseState​(long offset)
      • readReleaseState

        protected final void readReleaseState​(long offset)
      • writeAcquireState

        protected final void writeAcquireState​(long offset)
      • readAcquireState

        protected final void readAcquireState​(long offset)
      • offsetForIndex

        protected final long offsetForIndex​(long currentHead)
      • offsetForIndex

        protected static long offsetForIndex​(long bufferAddress,
                                             long mask,
                                             int messageSize,
                                             long currentHead)
      • relativeIndexForOffset

        protected final long relativeIndexForOffset​(long offset)
      • relativeIndexForOffset

        protected static long relativeIndexForOffset​(long bufferAddress,
                                                     int messageSize,
                                                     long offset)
        Computes an index relative to the buffer start for an offset. This does not recover the original index because that is a very hard problem.
        Parameters:
        bufferAddress -
        messageSize -
        offset -
        Returns:
      • lpConsumerIndex

        protected final long lpConsumerIndex()
      • lvConsumerIndex

        protected final long lvConsumerIndex()
      • soConsumerIndex

        protected final void soConsumerIndex​(long value)
      • lpProducerIndex

        protected final long lpProducerIndex()
      • lvProducerIndex

        protected final long lvProducerIndex()
      • soProducerIndex

        protected final void soProducerIndex​(long value)
      • arrayIndexForCursor

        protected final long arrayIndexForCursor​(long currentHead)
      • arrayIndexForCursor

        protected static long arrayIndexForCursor​(long mask,
                                                  int referenceMessageSize,
                                                  long currentHead)
      • writeReference

        protected void writeReference​(long offset,
                                      Object reference)
        Write a reference to the given position
        Specified by:
        writeReference in class ProxyChannelRingBuffer
        Parameters:
        offset - index into the reference array
        reference -
      • readReference

        protected Object readReference​(long offset)
        Read a reference at the given position
        Specified by:
        readReference in class ProxyChannelRingBuffer
        Parameters:
        offset - index into the reference array
        Returns:
      • readAcquire

        protected abstract long readAcquire()
        Description copied from class: ProxyChannelRingBuffer
        Acquire an offset to read from
        Specified by:
        readAcquire in class ProxyChannelRingBuffer
        Returns:
        a base address for a message acquired to be read, or EOF if none is available
      • readRelease

        protected abstract void readRelease​(long offset)
        Description copied from class: ProxyChannelRingBuffer
        Release the offset from reading
        Specified by:
        readRelease in class ProxyChannelRingBuffer
        Parameters:
        offset - the base address of a message that we are done reading and can be overwritten now
      • writeAcquire

        protected abstract long writeAcquire()
        Description copied from class: ProxyChannelRingBuffer
        Acquire an offset to write to. If there's no space available a wait strategy may be used.
        Specified by:
        writeAcquire in class ProxyChannelRingBuffer
        Returns:
        a base address for a message acquired to be written, or EOF if none is available
      • writeRelease

        protected abstract void writeRelease​(long offset)
        Parameters:
        offset - the base address of a message that we are done writing and can be read now