Class BytesRefBlockPool

java.lang.Object
org.apache.lucene.util.BytesRefBlockPool
All Implemented Interfaces:
Accountable

public class BytesRefBlockPool extends Object implements Accountable
Represents a logical list of ByteRef backed by a ByteBlockPool. It uses up to two bytes to record the length of the BytesRef followed by the actual bytes. They can be read using the start position returned when they are appended.

The BytesRef is written so it never crosses the ByteBlockPool.BYTE_BLOCK_SIZE boundary. The limit of the largest BytesRef is therefore ByteBlockPool.BYTE_BLOCK_SIZE-2 bytes.

  • Field Details

    • BASE_RAM_BYTES

      private static final long BASE_RAM_BYTES
    • byteBlockPool

      private final ByteBlockPool byteBlockPool
  • Constructor Details

    • BytesRefBlockPool

      public BytesRefBlockPool()
    • BytesRefBlockPool

      public BytesRefBlockPool(ByteBlockPool byteBlockPool)
  • Method Details

    • reset

      void reset()
      Reset this buffer to the empty state.
    • fillBytesRef

      public void fillBytesRef(BytesRef term, int start)
      Populates the given BytesRef with the term starting at start.
      See Also:
    • addBytesRef

      public int addBytesRef(BytesRef bytes)
      Add a term returning the start position on the underlying ByteBlockPool. THis can be used to read back the value using fillBytesRef(BytesRef, int).
      See Also:
    • hash

      int hash(int start)
      Computes the hash of the BytesRef at the given start. This is equivalent of doing:
           BytesRef bytes = new BytesRef();
           fillTerm(bytes, start);
           BytesRefHash.doHash(bytes.bytes, bytes.pos, bytes.len);
        
      It just saves the work of filling the BytesRef.
    • equals

      boolean equals(int start, BytesRef b)
      Computes the equality between the BytesRef at the start position with the provided BytesRef. This is equivalent of doing:
           BytesRef bytes = new BytesRef();
           fillTerm(bytes, start);
           Arrays.equals(bytes.bytes, bytes.offset, bytes.offset + length, b.bytes, b.offset, b.offset + b.length);
        
      It just saves the work of filling the BytesRef.
    • ramBytesUsed

      public long ramBytesUsed()
      Description copied from interface: Accountable
      Return the memory usage of this object in bytes. Negative values are illegal.
      Specified by:
      ramBytesUsed in interface Accountable