FileDocCategorySizeDatePackage
OutgoingMessageQueue.javaAPI DocAzureus 3.0.3.47439Tue Jul 17 18:03:12 BST 2007com.aelitis.azureus.core.networkmanager

OutgoingMessageQueue

public interface OutgoingMessageQueue
Priority-based outbound peer message queue.

Fields Summary
Constructors Summary
Methods Summary
public voidaddMessage(Message message, boolean manual_listener_notify)
Add a message to the message queue. NOTE: Allows for manual listener notification at some later time, using doListenerNotifications(), instead of notifying immediately from within this method. This is useful if you want to invoke listeners outside of some greater synchronised block to avoid deadlock.

param
message message to add
param
manual_listener_notify true for manual notification, false for automatic

public voidcancelQueueListener(com.aelitis.azureus.core.networkmanager.OutgoingMessageQueue$MessageQueueListener listener)
Cancel queue event notification listener.

param
listener

public intdeliverToTransport(int max_bytes, boolean manual_listener_notify)
Deliver (write) message(s) data to the underlying transport. NOTE: Allows for manual listener notification at some later time, using doListenerNotifications(), instead of notifying immediately from within this method. This is useful if you want to invoke listeners outside of some greater synchronised block to avoid deadlock.

param
max_bytes maximum number of bytes to deliver
param
manual_listener_notify true for manual notification, false for automatic
return
number of bytes delivered
throws
IOException on delivery error

public voiddestroy()
Destroy this queue; i.e. perform cleanup actions.

public voiddoListenerNotifications()
Manually send any unsent listener notifications.

public MessageStreamEncodergetEncoder()

public intgetMssSize()

public intgetPercentDoneOfCurrentMessage()
Get the percentage of the current message that has already been sent out.

return
percentage complete (0-99), or -1 if no message is currently being sent

public java.lang.StringgetQueueTrace()

public intgetTotalSize()
Get the total number of bytes ready to be transported.

return
total bytes remaining

public booleanhasUrgentMessage()
Whether or not an urgent message (one that needs an immediate send, i.e. a no-delay message) is queued.

return
true if there's a message tagged for immediate write

public booleanisDestroyed()

public voidnotifyOfExternallySentMessage(Message message)
Notifty the queue (and its listeners) of a message sent externally on the queue's behalf.

param
message sent externally

public voidregisterQueueListener(com.aelitis.azureus.core.networkmanager.OutgoingMessageQueue$MessageQueueListener listener)
Add a listener to be notified of queue events.

param
listener

public booleanremoveMessage(Message message, boolean manual_listener_notify)
Remove a particular message from the queue. NOTE: Only the original message found in the queue will be destroyed upon removal, which may not necessarily be the one passed as the method parameter, as some messages override equals() (i.e. BTRequest messages) instead of using reference equality, and could be a completely different object, and would need to be destroyed manually. If the message does not override equals, then any such method will likely *not* be found and removed, as internal queued object was a new allocation on insertion. NOTE: Allows for manual listener notification at some later time, using doListenerNotifications(), instead of notifying immediately from within this method. This is useful if you want to invoke listeners outside of some greater synchronised block to avoid deadlock.

param
message to remove
param
manual_listener_notify true for manual notification, false for automatic
return
true if the message was removed, false otherwise

public voidremoveMessagesOfType(Message[] message_types, boolean manual_listener_notify)
Remove all messages of the given types from the queue. NOTE: Allows for manual listener notification at some later time, using doListenerNotifications(), instead of notifying immediately from within this method. This is useful if you want to invoke listeners outside of some greater synchronised block to avoid deadlock.

param
message_types type to remove
param
manual_listener_notify true for manual notification, false for automatic

public voidsetEncoder(MessageStreamEncoder stream_encoder)
Set the message stream encoder that will be used to encode outgoing messages.

param
stream_encoder to use

public voidsetTrace(boolean on)

public voidsetTransport(Transport _transport)