Class PagedBytes

  • All Implemented Interfaces:
    Accountable

    public final class PagedBytes
    extends java.lang.Object
    implements Accountable
    Represents a logical byte[] as a series of pages. You can write-once into the logical byte[] (append only), using copy, and then retrieve slices (BytesRef) into it using fill.
    • Field Detail

      • BASE_RAM_BYTES_USED

        private static final long BASE_RAM_BYTES_USED
      • blocks

        private byte[][] blocks
      • numBlocks

        private int numBlocks
      • blockSize

        private final int blockSize
      • blockBits

        private final int blockBits
      • blockMask

        private final int blockMask
      • didSkipBytes

        private boolean didSkipBytes
      • frozen

        private boolean frozen
      • upto

        private int upto
      • currentBlock

        private byte[] currentBlock
      • bytesUsedPerBlock

        private final long bytesUsedPerBlock
      • EMPTY_BYTES

        private static final byte[] EMPTY_BYTES
    • Constructor Detail

      • PagedBytes

        public PagedBytes​(int blockBits)
        1<<blockBits must be bigger than biggest single BytesRef slice that will be pulled
    • Method Detail

      • addBlock

        private void addBlock​(byte[] block)
      • copy

        public void copy​(IndexInput in,
                         long byteCount)
                  throws java.io.IOException
        Read this many bytes from in
        Throws:
        java.io.IOException
      • copy

        public void copy​(BytesRef bytes,
                         BytesRef out)
        Copy BytesRef in, setting BytesRef out to the result. Do not use this if you will use freeze(true). This only supports bytes.length <= blockSize
      • freeze

        public PagedBytes.Reader freeze​(boolean trim)
        Commits final byte[], trimming it if necessary and if trim=true
      • getPointer

        public long getPointer()
      • 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
      • copyUsingLengthPrefix

        public long copyUsingLengthPrefix​(BytesRef bytes)
        Copy bytes in, writing the length as a 1 or 2 byte vInt prefix.
      • getDataOutput

        public PagedBytes.PagedBytesDataOutput getDataOutput()
        Returns a DataOutput that you may use to write into this PagedBytes instance. If you do this, you should not call the other writing methods (eg, copy); results are undefined.