org.apache.lucene.util

## Class PagedBytes

- java.lang.Object
- - org.apache.lucene.util.PagedBytes

- All Implemented Interfaces:
    Accountable

      public final class PagedBytes
      extends 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.
  NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PagedBytes.PagedBytesDataInput`
    `class` | `PagedBytes.PagedBytesDataOutput`
    `static class` | `PagedBytes.Reader` Provides methods to read BytesRefs from a frozen PagedBytes.

  - ### Field Summary

    - ### Fields inherited from interface org.apache.lucene.util.Accountable

      `NULL_ACCOUNTABLE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PagedBytes(int blockBits)` 1<<blockBits must be bigger than biggest single BytesRef slice that will be pulled

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `copy(BytesRef bytes, BytesRef out)` Copy BytesRef in, setting BytesRef out to the result.
    `void` | `copy(IndexInput in, long byteCount)` Read this many bytes from in
    `long` | `copyUsingLengthPrefix(BytesRef bytes)` Copy bytes in, writing the length as a 1 or 2 byte vInt prefix.
    `PagedBytes.Reader` | `freeze(boolean trim)` Commits final byte[], trimming it if necessary and if trim=true
    `PagedBytes.PagedBytesDataInput` | `getDataInput()` Returns a DataInput to read values from this PagedBytes instance.
    `PagedBytes.PagedBytesDataOutput` | `getDataOutput()` Returns a DataOutput that you may use to write into this PagedBytes instance.
    `long` | `getPointer()`
    `long` | `ramBytesUsed()` Return the memory usage of this object in bytes.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.lucene.util.Accountable

      `getChildResources`

- - ### Constructor Detail

    - #### PagedBytes

          public PagedBytes(int blockBits)

      1<<blockBits must be bigger than biggest single BytesRef slice that will be pulled

  - ### Method Detail

    - #### copy

          public void copy(IndexInput in,
                           long byteCount)
                    throws IOException

      Read this many bytes from in
      Throws:
        `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.

    - #### getDataInput

          public PagedBytes.PagedBytesDataInput getDataInput()

      Returns a DataInput to read values from this PagedBytes instance.

    - #### 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.

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.