package org.jivesoftware.openfire.filetransfer;
/**
* An event listener for File Transfer related events.
*
* @author Guus der Kinderen, guus.der.kinderen@gmail.com
*/
public interface FileTransferEventListener
{
/**
* Invoked when a file transfer is about to start.. The interceptor can either modify the file transfer or
* throw a FileTransferRejectedException. The file transfer went sent to the interceptor can be in two states, ready
* and not ready. The not ready state indicates that this event was fired when the file transfer request was sent by
* the initiator. The ready state indicates that the file transfer is ready to begin, and the channels can be
* manipulated by the interceptor.
* <p/>
* It is recommended for the the sake of user experience that when in the not ready state, any processing done on
* the file transfer should be quick.
*
* @param transfer the transfer being intercepted (never null).
* @param isReady true if the transfer is ready to commence or false if this is related to the
* initial file transfer request. An exception at this point will cause the transfer to
* not go through.
*/
void fileTransferStart( FileTransfer transfer, boolean isReady ) throws FileTransferRejectedException;
/**
* Invoked when a file transfer was completed. Events are generated for events that succeeded, but also for those
* that failed.
*
* @param transfer the transfer being intercepted (never null).
* @param wasSuccessful false when an exception was thrown during file transfer, otherwise true.
*/
void fileTransferComplete( FileTransfer transfer, boolean wasSuccessful );
}