Class SpscOffHeapFixedSizeRingBuffer

Direct Known Subclasses:
SpscChannelConsumer, SpscChannelProducer

public class SpscOffHeapFixedSizeRingBuffer extends OffHeapFixedMessageSizeRingBuffer
Channel protocol: - Fixed message size - 'null' indicator in message preceding byte (potentially use same for type mapping in future) - Use FF algorithm relying on indicator to support in place detection of next element existence
  • Field Details

    • MAX_LOOK_AHEAD_STEP

      private static final Integer MAX_LOOK_AHEAD_STEP
    • EOF

      public static final long EOF
      See Also:
    • lookAheadStep

      private final int lookAheadStep
    • producerLookAheadCacheAddress

      private final long producerLookAheadCacheAddress
  • Constructor Details

    • SpscOffHeapFixedSizeRingBuffer

      public SpscOffHeapFixedSizeRingBuffer(int capacity, int messageSize, int referenceMessageSize)
    • SpscOffHeapFixedSizeRingBuffer

      protected SpscOffHeapFixedSizeRingBuffer(ByteBuffer buff, int capacity, boolean isProducer, boolean isConsumer, boolean initialize, int messageSize, 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
      messageSize -
  • Method Details

    • getLookaheadStep

      public static int getLookaheadStep(int capacity)
    • writeAcquire

      protected final 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 OffHeapFixedMessageSizeRingBuffer
      Returns:
      a base address for a message acquired to be written, or EOF if none is available
    • writeRelease

      protected final void writeRelease(long offset)
      Specified by:
      writeRelease in class OffHeapFixedMessageSizeRingBuffer
      Parameters:
      offset - the base address of a message that we are done writing and can be read now
    • writeRelease

      protected final void writeRelease(long offset, int type)
      Description copied from class: ProxyChannelRingBuffer
      Ordered store of the callTypeId for the message at offset
      Specified by:
      writeRelease in class ProxyChannelRingBuffer
      Parameters:
      offset - the offset that was released for writing
      type - A unique ID for the call
    • readAcquire

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

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

      private long lpLookAheadCache()
    • spLookAheadCache

      private void spLookAheadCache(long value)