Class CborDecoder


  • public class CborDecoder
    extends Object
    Provides a decoder capable of handling CBOR encoded data from a InputStream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected long expectIntegerType​(int ib)
      Reads the next major type from the underlying input stream, and verifies whether it matches the given expectation.
      CborType peekType()
      Peeks in the input stream for the upcoming type.
      long readArrayLength()
      Prolog to reading an array value in CBOR format.
      boolean readBoolean()
      Reads a boolean value in CBOR format.
      byte[] readByteString()
      Reads a byte string value in CBOR format.
      long readInt()
      Reads a signed or unsigned integer value in CBOR format.
      protected int readMajorType​(int majorType)
      Reads the next major type from the underlying input stream, and verifies whether it matches the given expectation.
      protected void readMajorTypeExact​(int majorType, int subtype)
      Reads the next major type from the underlying input stream, and verifies whether it matches the given expectations.
      protected long readMajorTypeWithSize​(int majorType)
      Reads the next major type from the underlying input stream, verifies whether it matches the given expectation, and decodes the payload into a size.
      Object readNull()
      Reads a null-value in CBOR format.
      String readTextString()
      Reads an UTF-8 encoded string value in CBOR format.
      protected long readUInt​(int length, boolean breakAllowed)
      Reads an unsigned integer with a given length-indicator.
      protected int readUInt16()
      Reads an unsigned 16-bit integer value
      protected long readUInt32()
      Reads an unsigned 32-bit integer value
      protected long readUInt64()
      Reads an unsigned 64-bit integer value
      protected int readUInt8()
      Reads an unsigned 8-bit integer value
    • Constructor Detail

      • CborDecoder

        public CborDecoder​(InputStream is)
        Creates a new CborDecoder instance.
        Parameters:
        is - the actual input stream to read the CBOR-encoded data from, cannot be null.
    • Method Detail

      • peekType

        public CborType peekType()
                          throws IOException
        Peeks in the input stream for the upcoming type.
        Returns:
        the upcoming type in the stream, or null in case of an end-of-stream.
        Throws:
        IOException - in case of I/O problems reading the CBOR-type from the underlying input stream.
      • readArrayLength

        public long readArrayLength()
                             throws IOException
        Prolog to reading an array value in CBOR format.
        Returns:
        the number of elements in the array to read, or -1 in case of infinite-length arrays.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readBoolean

        public boolean readBoolean()
                            throws IOException
        Reads a boolean value in CBOR format.
        Returns:
        the read boolean.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readByteString

        public byte[] readByteString()
                              throws IOException
        Reads a byte string value in CBOR format.
        Returns:
        the read byte string, never null. In case the encoded string has a length of 0, an empty string is returned.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readInt

        public long readInt()
                     throws IOException
        Reads a signed or unsigned integer value in CBOR format.
        Returns:
        the read integer value, values from Long.MIN_VALUE to Long.MAX_VALUE are supported.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readNull

        public Object readNull()
                        throws IOException
        Reads a null-value in CBOR format.
        Returns:
        always null.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readTextString

        public String readTextString()
                              throws IOException
        Reads an UTF-8 encoded string value in CBOR format.
        Returns:
        the read UTF-8 encoded string, never null. In case the encoded string has a length of 0, an empty string is returned.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • expectIntegerType

        protected long expectIntegerType​(int ib)
                                  throws IOException
        Reads the next major type from the underlying input stream, and verifies whether it matches the given expectation.
        Parameters:
        ib - the expected major type, cannot be null (unchecked).
        Returns:
        either -1 if the major type was an signed integer, or 0 otherwise.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readMajorType

        protected int readMajorType​(int majorType)
                             throws IOException
        Reads the next major type from the underlying input stream, and verifies whether it matches the given expectation.
        Parameters:
        majorType - the expected major type, cannot be null (unchecked).
        Returns:
        the read subtype, or payload, of the read major type.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readMajorTypeExact

        protected void readMajorTypeExact​(int majorType,
                                          int subtype)
                                   throws IOException
        Reads the next major type from the underlying input stream, and verifies whether it matches the given expectations.
        Parameters:
        majorType - the expected major type, cannot be null (unchecked);
        subtype - the expected subtype.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readMajorTypeWithSize

        protected long readMajorTypeWithSize​(int majorType)
                                      throws IOException
        Reads the next major type from the underlying input stream, verifies whether it matches the given expectation, and decodes the payload into a size.
        Parameters:
        majorType - the expected major type, cannot be null (unchecked).
        Returns:
        the number of succeeding bytes, >= 0, or -1 if an infinite-length type is read.
        Throws:
        IOException - in case of I/O problems reading the CBOR-encoded value from the underlying input stream.
      • readUInt

        protected long readUInt​(int length,
                                boolean breakAllowed)
                         throws IOException
        Reads an unsigned integer with a given length-indicator.
        Parameters:
        length - the length indicator to use;
        breakAllowed - whether break is allowed.
        Returns:
        the read unsigned integer, as long value.
        Throws:
        IOException - in case of I/O problems reading the unsigned integer from the underlying input stream.
      • readUInt16

        protected int readUInt16()
                          throws IOException
        Reads an unsigned 16-bit integer value
        Returns:
        value the read value, values from Long.MIN_VALUE to Long.MAX_VALUE are supported.
        Throws:
        IOException - in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
      • readUInt32

        protected long readUInt32()
                           throws IOException
        Reads an unsigned 32-bit integer value
        Returns:
        value the read value, values from Long.MIN_VALUE to Long.MAX_VALUE are supported.
        Throws:
        IOException - in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
      • readUInt64

        protected long readUInt64()
                           throws IOException
        Reads an unsigned 64-bit integer value
        Returns:
        value the read value, values from Long.MIN_VALUE to Long.MAX_VALUE are supported.
        Throws:
        IOException - in case of I/O problems writing the CBOR-encoded value to the underlying output stream.
      • readUInt8

        protected int readUInt8()
                         throws IOException
        Reads an unsigned 8-bit integer value
        Returns:
        value the read value, values from Long.MIN_VALUE to Long.MAX_VALUE are supported.
        Throws:
        IOException - in case of I/O problems writing the CBOR-encoded value to the underlying output stream.