Class AZMessageDecoder
- java.lang.Object
-
- com.biglybt.core.peermanager.messaging.azureus.AZMessageDecoder
-
- All Implemented Interfaces:
MessageStreamDecoder
public class AZMessageDecoder extends java.lang.Object implements MessageStreamDecoder
Length-prefixed message decoding.
-
-
Field Summary
Fields Modifier and Type Field Description private int
data_bytes_last_read
private java.nio.ByteBuffer[]
decode_array
private boolean
destroyed
private boolean
is_paused
private boolean
last_read_made_progress
private DirectByteBuffer
length_buffer
private static int
MAX_MESSAGE_LENGTH
private int
maximum_message_size
private int
message_length
private java.util.ArrayList
messages_last_read
private static int
MIN_MESSAGE_LENGTH
private byte[]
msg_id_bytes
private boolean
msg_id_read_complete
private DirectByteBuffer
payload_buffer
private int
percent_complete
private int
pre_read_start_buffer
private int
pre_read_start_position
private int
protocol_bytes_last_read
private boolean
reading_length_mode
private static byte
SS
-
Constructor Summary
Constructors Constructor Description AZMessageDecoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.nio.ByteBuffer
destroy()
Destroy this decoder, i.e.int
getDataBytesDecoded()
Get the number of (piece) data bytes decoded from the transport, from the last decode op.boolean
getLastReadMadeProgress()
int
getPercentDoneOfCurrentMessage()
Get the percentage of the current message that has already been received (read from the transport).int
getProtocolBytesDecoded()
Get the number of protocol (overhead) bytes decoded from the transport, from the last decode op.void
pauseDecoding()
Pause message decoding.int
performStreamDecode(Transport transport, int max_bytes)
Decode message stream from the given transport.private int
postReadProcess()
private int
preReadProcess(int allowed)
Message[]
removeDecodedMessages()
Get the messages decoded from the transport, if any, from the last decode op.void
resumeDecoding()
Resume message decoding.void
setMaximumMessageSize(int max_bytes)
-
-
-
Field Detail
-
MIN_MESSAGE_LENGTH
private static final int MIN_MESSAGE_LENGTH
- See Also:
- Constant Field Values
-
MAX_MESSAGE_LENGTH
private static final int MAX_MESSAGE_LENGTH
- See Also:
- Constant Field Values
-
SS
private static final byte SS
- See Also:
- Constant Field Values
-
payload_buffer
private DirectByteBuffer payload_buffer
-
length_buffer
private final DirectByteBuffer length_buffer
-
decode_array
private final java.nio.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 java.util.ArrayList messages_last_read
-
protocol_bytes_last_read
private int protocol_bytes_last_read
-
data_bytes_last_read
private int data_bytes_last_read
-
percent_complete
private int percent_complete
-
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
-
-
Method Detail
-
setMaximumMessageSize
public void setMaximumMessageSize(int max_bytes)
-
performStreamDecode
public int performStreamDecode(Transport transport, int max_bytes) throws java.io.IOException
Description copied from interface:MessageStreamDecoder
Decode message stream from the given transport.- Specified by:
performStreamDecode
in interfaceMessageStreamDecoder
- Parameters:
transport
- to decode frommax_bytes
- to decode/read from the stream- Returns:
- number of bytes decoded
- Throws:
java.io.IOException
- on decoding error
-
getPercentDoneOfCurrentMessage
public int getPercentDoneOfCurrentMessage()
Description copied from interface:MessageStreamDecoder
Get the percentage of the current message that has already been received (read from the transport).- Specified by:
getPercentDoneOfCurrentMessage
in interfaceMessageStreamDecoder
- Returns:
- percentage complete (0-99), or -1 if no message is currently being received
-
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 interfaceMessageStreamDecoder
- 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 interfaceMessageStreamDecoder
- Returns:
- number of protocol bytes recevied
-
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 interfaceMessageStreamDecoder
- Returns:
- number of data bytes received
-
getLastReadMadeProgress
public boolean getLastReadMadeProgress()
-
destroy
public java.nio.ByteBuffer destroy()
Description copied from interface:MessageStreamDecoder
Destroy this decoder, i.e. perform cleanup.- Specified by:
destroy
in interfaceMessageStreamDecoder
- Returns:
- any bytes already-read and still remaining within the decoder
-
preReadProcess
private int preReadProcess(int allowed)
-
postReadProcess
private int postReadProcess() throws java.io.IOException
- Throws:
java.io.IOException
-
pauseDecoding
public void pauseDecoding()
Description copied from interface:MessageStreamDecoder
Pause message decoding.- Specified by:
pauseDecoding
in interfaceMessageStreamDecoder
-
resumeDecoding
public void resumeDecoding()
Description copied from interface:MessageStreamDecoder
Resume message decoding.- Specified by:
resumeDecoding
in interfaceMessageStreamDecoder
-
-