Class FlexBuffersBuilder

java.lang.Object
io.objectbox.flatbuffers.FlexBuffersBuilder

public class FlexBuffersBuilder extends Object
Helper class that builds FlexBuffers

This class presents all necessary APIs to create FlexBuffers. A `ByteBuffer` will be used to store the data. It can be created internally, or passed down in the constructor.

There are some limitations when compared to original implementation in C++. Most notably:

  • No support for mutations (might change in the future).

  • Buffer size limited to Integer.MAX_VALUE

  • Since Java does not support unsigned type, all unsigned operations accepts an immediate higher representation of similar type.

  • Field Details

    • BUILDER_FLAG_NONE

      public static final int BUILDER_FLAG_NONE
      No keys or strings will be shared
      See Also:
    • BUILDER_FLAG_SHARE_KEYS

      public static final int BUILDER_FLAG_SHARE_KEYS
      Keys will be shared between elements. Identical keys will only be serialized once, thus possibly saving space. But serialization performance might be slower and consumes more memory.
      See Also:
    • BUILDER_FLAG_SHARE_STRINGS

      public static final int BUILDER_FLAG_SHARE_STRINGS
      Strings will be shared between elements. Identical strings will only be serialized once, thus possibly saving space. But serialization performance might be slower and consumes more memory. This is ideal if you expect many repeated strings on the message.
      See Also:
    • BUILDER_FLAG_SHARE_KEYS_AND_STRINGS

      public static final int BUILDER_FLAG_SHARE_KEYS_AND_STRINGS
      Strings and keys will be shared between elements.
      See Also:
    • BUILDER_FLAG_SHARE_KEY_VECTORS

      public static final int BUILDER_FLAG_SHARE_KEY_VECTORS
      Reserved for the future.
      See Also:
    • BUILDER_FLAG_SHARE_ALL

      public static final int BUILDER_FLAG_SHARE_ALL
      Reserved for the future.
      See Also:
  • Constructor Details

    • FlexBuffersBuilder

      public FlexBuffersBuilder(int bufSize)
      Constructs a newly allocated FlexBuffersBuilder with BUILDER_FLAG_SHARE_KEYS set.
      Parameters:
      bufSize - size of buffer in bytes.
    • FlexBuffersBuilder

      public FlexBuffersBuilder()
      Constructs a newly allocated FlexBuffersBuilder with BUILDER_FLAG_SHARE_KEYS set.
    • FlexBuffersBuilder

      @Deprecated public FlexBuffersBuilder(ByteBuffer bb, int flags)
      Deprecated.
      Constructs a newly allocated FlexBuffersBuilder.
      Parameters:
      bb - `ByteBuffer` that will hold the message
      flags - Share flags
    • FlexBuffersBuilder

      public FlexBuffersBuilder(ReadWriteBuf bb, int flags)
    • FlexBuffersBuilder

      public FlexBuffersBuilder(ByteBuffer bb)
      Constructs a newly allocated FlexBuffersBuilder. By default same keys will be serialized only once
      Parameters:
      bb - `ByteBuffer` that will hold the message
  • Method Details

    • clear

      public void clear()
      Reset the FlexBuffersBuilder by purging all data that it holds.
    • getBuffer

      public ReadWriteBuf getBuffer()
      Return `ByteBuffer` containing FlexBuffer message. #finish() must be called before calling this function otherwise an assert will trigger.
      Returns:
      `ByteBuffer` with finished message
    • putNull

      public void putNull()
      Insert a null value into the buffer
    • putNull

      public void putNull(String key)
      Insert a null value into the buffer
      Parameters:
      key - key used to store element in map
    • putBoolean

      public void putBoolean(boolean val)
      Insert a single boolean into the buffer
      Parameters:
      val - true or false
    • putBoolean

      public void putBoolean(String key, boolean val)
      Insert a single boolean into the buffer
      Parameters:
      key - key used to store element in map
      val - true or false
    • putInt

      public void putInt(int val)
      Adds a integer into the buff
      Parameters:
      val - integer
    • putInt

      public void putInt(String key, int val)
      Adds a integer into the buff
      Parameters:
      key - key used to store element in map
      val - integer
    • putInt

      public void putInt(String key, long val)
      Adds a integer into the buff
      Parameters:
      key - key used to store element in map
      val - 64-bit integer
    • putInt

      public void putInt(long value)
      Adds a 64-bit integer into the buff
      Parameters:
      value - integer
    • putUInt

      public void putUInt(int value)
      Adds a unsigned integer into the buff.
      Parameters:
      value - integer representing unsigned value
    • putUInt

      public void putUInt(long value)
      Adds a unsigned integer (stored in a signed 64-bit integer) into the buff.
      Parameters:
      value - integer representing unsigned value
    • putUInt64

      public void putUInt64(BigInteger value)
      Adds a 64-bit unsigned integer (stored as BigInteger) into the buff. Warning: This operation might be very slow.
      Parameters:
      value - integer representing unsigned value
    • putFloat

      public void putFloat(float value)
      Adds a 32-bit float into the buff.
      Parameters:
      value - float representing value
    • putFloat

      public void putFloat(String key, float val)
      Adds a 32-bit float into the buff.
      Parameters:
      key - key used to store element in map
      value - float representing value
    • putFloat

      public void putFloat(double value)
      Adds a 64-bit float into the buff.
      Parameters:
      value - float representing value
    • putFloat

      public void putFloat(String key, double val)
      Adds a 64-bit float into the buff.
      Parameters:
      key - key used to store element in map
      value - float representing value
    • putString

      public int putString(String value)
      Adds a String into the buffer
      Parameters:
      value - string
      Returns:
      start position of string in the buffer
    • putString

      public int putString(String key, String val)
      Adds a String into the buffer
      Parameters:
      key - key used to store element in map
      value - string
      Returns:
      start position of string in the buffer
    • putBlob

      public int putBlob(byte[] value)
      Adds a byte array into the message
      Parameters:
      value - byte array
      Returns:
      position in buffer as the start of byte array
    • putBlob

      public int putBlob(String key, byte[] val)
      Adds a byte array into the message
      Parameters:
      key - key used to store element in map
      value - byte array
      Returns:
      position in buffer as the start of byte array
    • startVector

      public int startVector()
      Start a new vector in the buffer.
      Returns:
      a reference indicating position of the vector in buffer. This reference must be passed along when the vector is finished using endVector()
    • endVector

      public int endVector(String key, int start, boolean typed, boolean fixed)
      Finishes a vector, but writing the information in the buffer
      Parameters:
      key - key used to store element in map
      start - reference for beginning of the vector. Returned by startVector()
      typed - boolean indicating whether vector is typed
      fixed - boolean indicating whether vector is fixed
      Returns:
      Reference to the vector
    • finish

      public ByteBuffer finish()
      Finish writing the message into the buffer. After that no other element must be inserted into the buffer. Also, you must call this function before start using the FlexBuffer message
      Returns:
      `ByteBuffer` containing the FlexBuffer message
    • startMap

      public int startMap()
      Start a new map in the buffer.
      Returns:
      a reference indicating position of the map in buffer. This reference must be passed along when the map is finished using endMap()
    • endMap

      public int endMap(String key, int start)
      Finishes a map, but writing the information in the buffer
      Parameters:
      key - key used to store element in map
      start - reference for beginning of the map. Returned by startMap()
      Returns:
      Reference to the map