Class IncomingMessageQueueImpl
- java.lang.Object
-
- com.biglybt.core.networkmanager.impl.IncomingMessageQueueImpl
-
- All Implemented Interfaces:
IncomingMessageQueue
public class IncomingMessageQueueImpl extends java.lang.Object implements IncomingMessageQueue
Inbound peer message queue.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.biglybt.core.networkmanager.IncomingMessageQueue
IncomingMessageQueue.MessageQueueListener
-
-
Field Summary
Fields Modifier and Type Field Description private NetworkConnection
connection
private java.util.ArrayList<IncomingMessageQueue.MessageQueueListener>
listeners
private AEMonitor
listeners_mon
private MessageStreamDecoder
stream_decoder
-
Constructor Summary
Constructors Constructor Description IncomingMessageQueueImpl(MessageStreamDecoder stream_decoder, NetworkConnection connection)
Create a new incoming message queue.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cancelQueueListener(IncomingMessageQueue.MessageQueueListener listener)
Cancel queue event notification listener.void
destroy()
Destroy this queue.MessageStreamDecoder
getDecoder()
int
getPercentDoneOfCurrentMessage()
Get the percentage of the current message that has already been received.void
notifyOfExternallyReceivedMessage(Message message)
Notifty the queue (and its listeners) of a message received externally on the queue's behalf.int[]
receiveFromTransport(int max_bytes, boolean protocol_is_free)
Receive (read) message(s) data from the underlying transport.void
registerQueueListener(IncomingMessageQueue.MessageQueueListener listener)
Add a listener to be notified of queue events.void
resumeQueueProcessing()
Manually resume processing (reading) incoming messages.void
setDecoder(MessageStreamDecoder new_stream_decoder)
Set the message stream decoder that will be used to decode incoming messages.
-
-
-
Field Detail
-
listeners
private volatile java.util.ArrayList<IncomingMessageQueue.MessageQueueListener> listeners
-
listeners_mon
private final AEMonitor listeners_mon
-
stream_decoder
private MessageStreamDecoder stream_decoder
-
connection
private final NetworkConnection connection
-
-
Constructor Detail
-
IncomingMessageQueueImpl
public IncomingMessageQueueImpl(MessageStreamDecoder stream_decoder, NetworkConnection connection)
Create a new incoming message queue.- Parameters:
stream_decoder
- default message stream decoderconnection
- owner to read from
-
-
Method Detail
-
setDecoder
public void setDecoder(MessageStreamDecoder new_stream_decoder)
Set the message stream decoder that will be used to decode incoming messages.- Specified by:
setDecoder
in interfaceIncomingMessageQueue
- Parameters:
new_stream_decoder
- to use
-
getDecoder
public MessageStreamDecoder getDecoder()
- Specified by:
getDecoder
in interfaceIncomingMessageQueue
-
getPercentDoneOfCurrentMessage
public int getPercentDoneOfCurrentMessage()
Get the percentage of the current message that has already been received.- Specified by:
getPercentDoneOfCurrentMessage
in interfaceIncomingMessageQueue
- Returns:
- percentage complete (0-99), or -1 if no message is currently being received
-
receiveFromTransport
public int[] receiveFromTransport(int max_bytes, boolean protocol_is_free) throws java.io.IOException
Receive (read) message(s) data from the underlying transport.- Specified by:
receiveFromTransport
in interfaceIncomingMessageQueue
- Parameters:
max_bytes
- to read- Returns:
- number of bytes received
- Throws:
java.io.IOException
- on receive error
-
notifyOfExternallyReceivedMessage
public void notifyOfExternallyReceivedMessage(Message message) throws java.io.IOException
Notifty the queue (and its listeners) of a message received externally on the queue's behalf.- Specified by:
notifyOfExternallyReceivedMessage
in interfaceIncomingMessageQueue
- Parameters:
message
- received externally- Throws:
java.io.IOException
-
resumeQueueProcessing
public void resumeQueueProcessing()
Manually resume processing (reading) incoming messages. NOTE: Allows us to resume docoding externally, in case it was auto-paused internally.- Specified by:
resumeQueueProcessing
in interfaceIncomingMessageQueue
-
registerQueueListener
public void registerQueueListener(IncomingMessageQueue.MessageQueueListener listener)
Add a listener to be notified of queue events.- Specified by:
registerQueueListener
in interfaceIncomingMessageQueue
- Parameters:
listener
-
-
cancelQueueListener
public void cancelQueueListener(IncomingMessageQueue.MessageQueueListener listener)
Cancel queue event notification listener.- Specified by:
cancelQueueListener
in interfaceIncomingMessageQueue
- Parameters:
listener
-
-
destroy
public void destroy()
Destroy this queue.- Specified by:
destroy
in interfaceIncomingMessageQueue
-
-