Class AZMessageDecoder

java.lang.Object
com.biglybt.core.peermanager.messaging.azureus.AZMessageDecoder
All Implemented Interfaces:
MessageStreamDecoder

public class AZMessageDecoder extends Object implements MessageStreamDecoder
Length-prefixed message decoding.
  • Field Details

    • MIN_MESSAGE_LENGTH

      private static final int MIN_MESSAGE_LENGTH
      See Also:
    • MAX_MESSAGE_LENGTH

      private static final int MAX_MESSAGE_LENGTH
      See Also:
    • SS

      private static final byte SS
      See Also:
    • payload_buffer

      private DirectByteBuffer payload_buffer
    • length_buffer

      private final DirectByteBuffer length_buffer
    • decode_array

      private final ByteBuffer[] decode_array
    • reading_length_mode

      private boolean reading_length_mode
    • message_length

      private int message_length
    • pre_read_start_buffer

      private int pre_read_start_buffer
    • pre_read_start_position

      private int pre_read_start_position
    • destroyed

      private volatile boolean destroyed
    • is_paused

      private volatile boolean is_paused
    • messages_last_read

      private final ArrayList messages_last_read
    • protocol_bytes_last_read

      private int protocol_bytes_last_read
    • data_bytes_last_read

      private int data_bytes_last_read
    • progress_id

      private int progress_id
    • progress

      private int[] progress
    • msg_id_bytes

      private byte[] msg_id_bytes
    • msg_id_read_complete

      private boolean msg_id_read_complete
    • last_read_made_progress

      private boolean last_read_made_progress
    • maximum_message_size

      private int maximum_message_size
  • Constructor Details

    • AZMessageDecoder

      public AZMessageDecoder()
  • Method Details

    • setMaximumMessageSize

      public void setMaximumMessageSize(int max_bytes)
    • performStreamDecode

      public int performStreamDecode(Transport transport, int max_bytes) throws IOException
      Description copied from interface: MessageStreamDecoder
      Decode message stream from the given transport.
      Specified by:
      performStreamDecode in interface MessageStreamDecoder
      Parameters:
      transport - to decode from
      max_bytes - to decode/read from the stream
      Returns:
      number of bytes decoded
      Throws:
      IOException - on decoding error
    • getCurrentMessageProgress

      public int[] getCurrentMessageProgress()
      Description copied from interface: MessageStreamDecoder
      Get the details of the current message that is being received (read from the transport).
      Specified by:
      getCurrentMessageProgress in interface MessageStreamDecoder
      Returns:
      [ size, done ] or null
    • removeDecodedMessages

      public Message[] removeDecodedMessages()
      Description copied from interface: MessageStreamDecoder
      Get the messages decoded from the transport, if any, from the last decode op.
      Specified by:
      removeDecodedMessages in interface MessageStreamDecoder
      Returns:
      decoded messages, or null if no new complete messages were decoded
    • getProtocolBytesDecoded

      public int getProtocolBytesDecoded()
      Description copied from interface: MessageStreamDecoder
      Get the number of protocol (overhead) bytes decoded from the transport, from the last decode op.
      Specified by:
      getProtocolBytesDecoded in interface MessageStreamDecoder
      Returns:
      number of protocol bytes received
    • getDataBytesDecoded

      public int getDataBytesDecoded()
      Description copied from interface: MessageStreamDecoder
      Get the number of (piece) data bytes decoded from the transport, from the last decode op.
      Specified by:
      getDataBytesDecoded in interface MessageStreamDecoder
      Returns:
      number of data bytes received
    • getLastReadMadeProgress

      public boolean getLastReadMadeProgress()
    • destroy

      public ByteBuffer destroy()
      Description copied from interface: MessageStreamDecoder
      Destroy this decoder, i.e. perform cleanup.
      Specified by:
      destroy in interface MessageStreamDecoder
      Returns:
      any bytes already-read and still remaining within the decoder
    • preReadProcess

      private int preReadProcess(int allowed)
    • postReadProcess

      private int postReadProcess() throws IOException
      Throws:
      IOException
    • pauseDecoding

      public void pauseDecoding()
      Description copied from interface: MessageStreamDecoder
      Pause message decoding.
      Specified by:
      pauseDecoding in interface MessageStreamDecoder
    • resumeDecoding

      public void resumeDecoding()
      Description copied from interface: MessageStreamDecoder
      Resume message decoding.
      Specified by:
      resumeDecoding in interface MessageStreamDecoder