Class CompressedNumber

java.lang.Object
org.apache.derby.iapi.services.io.CompressedNumber

public abstract class CompressedNumber extends Object
Static methods to write and read compressed forms of numbers to DataOut and DataIn interfaces. Format written is platform independent like the Data* interfaces and must remain fixed once a product is shipped. If a different format is required then write a new set of methods, e.g. writeInt2. The formats defined by stored format identifiers are implicitly dependent on these formats not changing.
  • Field Details

    • MAX_INT_STORED_SIZE

      public static final int MAX_INT_STORED_SIZE
      See Also:
    • MAX_LONG_STORED_SIZE

      public static final int MAX_LONG_STORED_SIZE
      See Also:
    • MAX_COMPRESSED_INT_ONE_BYTE

      public static final int MAX_COMPRESSED_INT_ONE_BYTE
      See Also:
    • MAX_COMPRESSED_INT_TWO_BYTES

      public static final int MAX_COMPRESSED_INT_TWO_BYTES
      See Also:
  • Constructor Details

    • CompressedNumber

      public CompressedNumber()
  • Method Details

    • writeInt

      public static final int writeInt(DataOutput out, int value) throws IOException
      Write a compressed integer only supporting signed values. Formats are (with x representing value bits):
                      1 Byte - 00xxxxxx                              Represents the value <= 63 (0x3f)
                      2 Byte - 01xxxxxx xxxxxxxx                     Represents the value > 63 && <= 16383 (0x3fff)
                      4 byte - 1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx   Represents the value > 16383 && <= MAX_INT
                      
      Throws:
      IOException - value is negative or an exception was thrown by a method on out.
    • writeInt

      public static final int writeInt(OutputStream out, int value) throws IOException
      Write a compressed integer directly to an OutputStream.
      Throws:
      IOException - an exception was thrown by a method on in.
    • readInt

      public static final int readInt(DataInput in) throws IOException
      Read an integer previously written by writeInt().
      Throws:
      IOException - an exception was thrown by a method on in.
    • readInt

      public static final int readInt(InputStream in) throws IOException
      Read an integer previously written by writeInt().
      Throws:
      IOException - an exception was thrown by a method on in.
    • readInt

      public static final int readInt(byte[] data, int offset)
    • sizeInt

      public static final int sizeInt(int value)
      Return the number of bytes that would be written by a writeInt call
    • writeLong

      public static final int writeLong(DataOutput out, long value) throws IOException
      Write a compressed long only supporting signed values. Formats are (with x representing value bits):
                      2 byte - 00xxxxxx xxxxxxxx                     Represents the value <= 16383 (0x3fff)
                      4 byte - 01xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx   Represents the value > 16383  && <= 0x3fffffff
                      8 byte - 1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx   Represents the value > 0x3fffffff && <= MAX_LONG
                      
      Throws:
      IOException - value is negative or an exception was thrown by a method on out.
    • writeLong

      public static final int writeLong(OutputStream out, long value) throws IOException
      Write a compressed integer only supporting signed values.
      Throws:
      IOException - value is negative or an exception was thrown by a method on out.
    • readLong

      public static final long readLong(DataInput in) throws IOException
      Read a long previously written by writeLong().
      Throws:
      IOException - an exception was thrown by a method on in.
    • readLong

      public static final long readLong(InputStream in) throws IOException
      Read a long previously written by writeLong().
      Throws:
      IOException - an exception was thrown by a method on in.
    • readLong

      public static final long readLong(byte[] data, int offset)
    • sizeLong

      public static final int sizeLong(long value)