Class HTTPMessageDecoder
- java.lang.Object
-
- com.biglybt.core.networkmanager.impl.http.HTTPMessageDecoder
-
- All Implemented Interfaces:
MessageStreamDecoder
public class HTTPMessageDecoder extends java.lang.Object implements MessageStreamDecoder
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
destroyed
private boolean
header_ready
private java.lang.StringBuffer
header_so_far
private HTTPNetworkConnection
http_connection
private static int
MAX_HEADER
private java.util.List
messages
private static java.lang.String
NL
private boolean
paused
private boolean
paused_internally
private int
protocol_bytes_read
-
Constructor Summary
Constructors Constructor Description HTTPMessageDecoder()
HTTPMessageDecoder(java.lang.String pre_read_header)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addMessage(Message message)
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.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.protected int
getQueueSize()
void
pauseDecoding()
Pause message decoding.protected void
pauseInternally()
int
performStreamDecode(Transport transport, int max_bytes)
Decode message stream from the given transport.Message[]
removeDecodedMessages()
Get the messages decoded from the transport, if any, from the last decode op.void
resumeDecoding()
Resume message decoding.void
setConnection(HTTPNetworkConnection _http_connection)
-
-
-
Field Detail
-
MAX_HEADER
private static final int MAX_HEADER
- See Also:
- Constant Field Values
-
NL
private static final java.lang.String NL
- See Also:
- Constant Field Values
-
http_connection
private HTTPNetworkConnection http_connection
-
paused
private volatile boolean paused
-
paused_internally
private volatile boolean paused_internally
-
destroyed
private volatile boolean destroyed
-
header_so_far
private final java.lang.StringBuffer header_so_far
-
header_ready
private boolean header_ready
-
messages
private final java.util.List messages
-
protocol_bytes_read
private int protocol_bytes_read
-
-
Method Detail
-
setConnection
public void setConnection(HTTPNetworkConnection _http_connection)
-
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
-
addMessage
protected void addMessage(Message message)
-
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
-
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
-
pauseInternally
protected void pauseInternally()
-
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
-
getQueueSize
protected int getQueueSize()
-
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
-
-