Interface PrimitiveArrayTypeDecoder

All Superinterfaces:
PrimitiveTypeDecoder<Object>, StreamTypeDecoder<Object>, TypeDecoder<Object>
All Known Implementing Classes:
AbstractArrayTypeDecoder, Array32TypeDecoder, Array8TypeDecoder

public interface PrimitiveArrayTypeDecoder extends PrimitiveTypeDecoder<Object>
Provides an interface for an Array type decoder that provides the Proton decoder with entry points to read arrays in a manner that support the desired Java array type to be returned.
  • Method Details

    • readValue

      Object readValue(ProtonBuffer buffer, DecoderState state, Class<?> ofType) throws DecodeException
      Reads the given array from the bytes in the buffer but only if the type encoding of the given array matches the given Class filter. This allows the caller to effectively limit if the given array is decoded at all if the type encoding is not a match and also can act to limit an array to only a single level as the type encoding of nested arrays will not be the value type until the bottom of the array is reached. To allow all types and any array nesting the caller should pass the Object class.
      Parameters:
      buffer - the source of encoded data.
      state - the current state of the decoder.
      ofType - the type encoding of the desired array.
      Returns:
      the next instance in the byte stream that this decoder handles.
      Throws:
      DecodeException - if an error is encountered while reading the next value.
    • readValue

      Object readValue(InputStream stream, StreamDecoderState state, Class<?> ofType) throws DecodeException
      Reads the given array from the bytes in the buffer but only if the type encoding of the given array matches the given Class filter. This allows the caller to effectively limit if the given array is decoded at all if the type encoding is not a match and also can act to limit an array to only a single level as the type encoding of nested arrays will not be the value type until the bottom of the array is reached. To allow all types and any array nesting the caller should pass the Object class.
      Parameters:
      stream - the source of encoded data.
      state - the current state of the decoder.
      ofType - the type encoding of the desired array.
      Returns:
      the next instance in the stream that this decoder handles.
      Throws:
      DecodeException - if an error is encountered while reading the next value.
    • readCount

      int readCount(ProtonBuffer buffer, DecoderState state)
      Reads the number of elements in the encoded primitive array from the given buffer and returns it. Since this methods advances the read position of the provided buffer the caller must either reset that based on a previous mark or they must read the primitive payload manually as the decoder would not be able to read the value as it has no retained state.
      Parameters:
      buffer - the source of encoded data.
      state - the current state of the decoder.
      Returns:
      the size in bytes of the encoded primitive value.
      Throws:
      DecodeException - if an error is encountered while reading the encoded size.
    • readCount

      int readCount(InputStream stream, StreamDecoderState state)
      Reads the number of elements in the encoded primitive from the given InputStream and returns it. Since this methods advances the read position of the provided stream the caller must either reset that based on a previous mark or they must read the primitive payload manually as the decoder would not be able to read the value as it has no retained state.
      Parameters:
      stream - the source of encoded data.
      state - the current state of the decoder.
      Returns:
      the size in bytes of the encoded primitive value.
      Throws:
      DecodeException - if an error is encountered while reading the encoded size.
    • validateArrayConstraints

      static void validateArrayConstraints(int count, ProtonBuffer buffer, DecoderState state, PrimitiveTypeDecoder<?> decoder) throws DecodeException
      Validates the basic requirements for the count field of an array encoding.
      Parameters:
      count - The count value read from the byte source
      buffer - The byte source that contains the remaining encoded bytes
      state - The decoder state used during this decode operation.
      decoder - The type encoder that is performing the current decode.
      Throws:
      DecodeException - if the count value violates the constraints.
    • validateArrayConstraints

      static void validateArrayConstraints(int count, InputStream stream, StreamDecoderState state, PrimitiveTypeDecoder<?> decoder) throws DecodeException
      Validates the basic requirements for the count field of an array encoding.
      Parameters:
      count - The count value read from the byte source
      stream - The byte source that contains the remaining encoded bytes
      state - The decoder state used during this decode operation.
      decoder - The type encoder that is performing the current decode.
      Throws:
      DecodeException - if the count value violates the constraints.