Class FlexBuffersBuilder


  • public class FlexBuffersBuilder
    extends java.lang.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.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Reset the FlexBuffersBuilder by purging all data that it holds.
      int endMap​(java.lang.String key, int start)
      Finishes a map, but writing the information in the buffer
      int endVector​(java.lang.String key, int start, boolean typed, boolean fixed)
      Finishes a vector, but writing the information in the buffer
      java.nio.ByteBuffer finish()
      Finish writing the message into the buffer.
      ReadWriteBuf getBuffer()
      Return `ByteBuffer` containing FlexBuffer message.
      int putBlob​(byte[] value)
      Adds a byte array into the message
      int putBlob​(java.lang.String key, byte[] val)
      Adds a byte array into the message
      void putBoolean​(boolean val)
      Insert a single boolean into the buffer
      void putBoolean​(java.lang.String key, boolean val)
      Insert a single boolean into the buffer
      void putFloat​(double value)
      Adds a 64-bit float into the buff.
      void putFloat​(float value)
      Adds a 32-bit float into the buff.
      void putFloat​(java.lang.String key, double val)
      Adds a 64-bit float into the buff.
      void putFloat​(java.lang.String key, float val)
      Adds a 32-bit float into the buff.
      void putInt​(int val)
      Adds a integer into the buff
      void putInt​(long value)
      Adds a 64-bit integer into the buff
      void putInt​(java.lang.String key, int val)
      Adds a integer into the buff
      void putInt​(java.lang.String key, long val)
      Adds a integer into the buff
      int putString​(java.lang.String value)
      Adds a String into the buffer
      int putString​(java.lang.String key, java.lang.String val)
      Adds a String into the buffer
      void putUInt​(int value)
      Adds a unsigned integer into the buff.
      void putUInt​(long value)
      Adds a unsigned integer (stored in a signed 64-bit integer) into the buff.
      void putUInt64​(java.math.BigInteger value)
      Adds a 64-bit unsigned integer (stored as BigInteger) into the buff.
      int startMap()
      Start a new map in the buffer.
      int startVector()
      Start a new vector in the buffer.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • BUILDER_FLAG_NONE

        public static final int BUILDER_FLAG_NONE
        No keys or strings will be shared
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • BUILDER_FLAG_SHARE_KEY_VECTORS

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

        public static final int BUILDER_FLAG_SHARE_ALL
        Reserved for the future.
        See Also:
        Constant Field Values
    • Constructor Detail

      • 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​(java.nio.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​(java.nio.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 Detail

      • 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
      • putBoolean

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

        public void putBoolean​(java.lang.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​(java.lang.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​(java.lang.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​(java.math.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​(java.lang.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​(java.lang.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​(java.lang.String value)
        Adds a String into the buffer
        Parameters:
        value - string
        Returns:
        start position of string in the buffer
      • putString

        public int putString​(java.lang.String key,
                             java.lang.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​(java.lang.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​(java.lang.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 begining 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 java.nio.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​(java.lang.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 begining of the map. Returned by startMap()
        Returns:
        Reference to the map