Class FrontCodedIntArrayIndexedWriter

    • Field Detail

      • ARRAY_COMPARATOR

        public static final Comparator<int[]> ARRAY_COMPARATOR
    • Constructor Detail

      • FrontCodedIntArrayIndexedWriter

        public FrontCodedIntArrayIndexedWriter​(SegmentWriteOutMedium segmentWriteOutMedium,
                                               ByteOrder byteOrder,
                                               int bucketSize)
    • Method Detail

      • write

        public int write​(@Nullable
                         int[] value)
                  throws IOException
        Description copied from interface: DictionaryWriter
        Writes an object to the dictionary.

        Returns the index of the value that was just written. This is defined as the `int` value that can be passed into DictionaryWriter.get(int) such that it will return the same value back.

        Specified by:
        write in interface DictionaryWriter<int[]>
        Parameters:
        value - object to be written to the dictionary
        Returns:
        index of the value that was just written
        Throws:
        IOException - if there is a problem with IO
      • writeTo

        public void writeTo​(WritableByteChannel channel,
                            FileSmoosher smoosher)
                     throws IOException
        Description copied from interface: Serializer
        Writes the serialized form of this object. The entire object may be written to the provided channel, or the object may be split over the provided channel and files added to the {@link FileSmoosher], where additional channels can be created via FileSmoosher.addWithSmooshedWriter(String, long). The latter approach is useful when the serialized form of the object is too large for a single smoosh container. At the time this javadoc was written, the max smoosh container size is limit to the max ByteBuffer size.
        Specified by:
        writeTo in interface Serializer
        Throws:
        IOException
      • getCardinality

        public int getCardinality()
        Description copied from interface: DictionaryWriter
        Returns the number of items that have been written so far in this dictionary. Any number lower than this cardinality can be passed into DictionaryWriter.get(int) and a value will be returned. If a value greater than or equal to the cardinality is passed into DictionaryWriter.get(int) all sorts of things could happen, but likely none of them are good.
        Specified by:
        getCardinality in interface DictionaryWriter<int[]>
        Returns:
        the number of items that have been written so far
      • writeBucket

        public static int writeBucket​(ByteBuffer buffer,
                                      int[][] values,
                                      int numValues)
        Write bucket of values to a ByteBuffer. The first value is written completely, subsequent values are written with an integer to indicate how much of the first value in the bucket is a prefix of the value, followed by the remaining bytes of the value. Uses VByte encoded integers to indicate prefix length and value length.
      • writeValue

        public static int writeValue​(ByteBuffer buffer,
                                     int[] ints)
        Write a variable length int[] value to a ByteBuffer, storing the length as a VByte encoded integer followed by the value itself. Returns the number of bytes written to the buffer. This method returns a negative value if there is no room available in the buffer, so that it can be grown if needed.