Smack

org.jivesoftware.smackx.filetransfer
Class IBBTransferNegotiator

java.lang.Object
  extended by org.jivesoftware.smackx.filetransfer.StreamNegotiator
      extended by org.jivesoftware.smackx.filetransfer.IBBTransferNegotiator

public class IBBTransferNegotiator
extends StreamNegotiator

The In-Band Bytestream file transfer method, or IBB for short, transfers the file over the same XML Stream used by XMPP. It is the fall-back mechanism in case the SOCKS5 bytestream method of transferring files is not available.

Author:
Alexander Wenckus, Henning Staib
See Also:
XEP-0047: In-Band Bytestreams (IBB)

Constructor Summary
protected IBBTransferNegotiator(Connection connection)
          The default constructor for the In-Band Bytestream Negotiator.
 
Method Summary
 void cleanup()
          Cleanup any and all resources associated with this negotiator.
 java.io.InputStream createIncomingStream(StreamInitiation initiation)
          This method handles the file stream download negotiation process.
 java.io.OutputStream createOutgoingStream(java.lang.String streamID, java.lang.String initiator, java.lang.String target)
          This method handles the file upload stream negotiation process.
 PacketFilter getInitiationPacketFilter(java.lang.String from, java.lang.String streamID)
          Returns the packet filter that will return the initiation packet for the appropriate stream initiation.
 java.lang.String[] getNamespaces()
          Returns the XMPP namespace reserved for this particular type of file transfer.
 
Methods inherited from class org.jivesoftware.smackx.filetransfer.StreamNegotiator
createError, createInitiationAccept
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IBBTransferNegotiator

protected IBBTransferNegotiator(Connection connection)
The default constructor for the In-Band Bytestream Negotiator.

Parameters:
connection - The connection which this negotiator works on.
Method Detail

createOutgoingStream

public java.io.OutputStream createOutgoingStream(java.lang.String streamID,
                                                 java.lang.String initiator,
                                                 java.lang.String target)
                                          throws XMPPException
Description copied from class: StreamNegotiator
This method handles the file upload stream negotiation process. The particular stream negotiator is determined during the file transfer negotiation process. This method returns the OutputStream to transmit the file to the remote user.

Specified by:
createOutgoingStream in class StreamNegotiator
Parameters:
streamID - The streamID that uniquely identifies the file transfer.
initiator - The fully-qualified JID of the initiator of the file transfer.
target - The fully-qualified JID of the target or receiver of the file transfer.
Returns:
The negotiated stream ready for data.
Throws:
XMPPException - If an error occurs during the negotiation process an exception will be thrown.

createIncomingStream

public java.io.InputStream createIncomingStream(StreamInitiation initiation)
                                         throws XMPPException
Description copied from class: StreamNegotiator
This method handles the file stream download negotiation process. The appropriate stream negotiator's initiate incoming stream is called after an appropriate file transfer method is selected. The manager will respond to the initiator with the selected means of transfer, then it will handle any negotiation specific to the particular transfer method. This method returns the InputStream, ready to transfer the file.

Specified by:
createIncomingStream in class StreamNegotiator
Parameters:
initiation - The initiation that triggered this download.
Returns:
After the negotiation process is complete, the InputStream to write a file to is returned.
Throws:
XMPPException - If an error occurs during this process an XMPPException is thrown.

getInitiationPacketFilter

public PacketFilter getInitiationPacketFilter(java.lang.String from,
                                              java.lang.String streamID)
Description copied from class: StreamNegotiator
Returns the packet filter that will return the initiation packet for the appropriate stream initiation.

Specified by:
getInitiationPacketFilter in class StreamNegotiator
Parameters:
from - The initiator of the file transfer.
streamID - The stream ID related to the transfer.
Returns:
The PacketFilter that will return the packet relatable to the stream initiation.

getNamespaces

public java.lang.String[] getNamespaces()
Description copied from class: StreamNegotiator
Returns the XMPP namespace reserved for this particular type of file transfer.

Specified by:
getNamespaces in class StreamNegotiator
Returns:
Returns the XMPP namespace reserved for this particular type of file transfer.

cleanup

public void cleanup()
Description copied from class: StreamNegotiator
Cleanup any and all resources associated with this negotiator.

Specified by:
cleanup in class StreamNegotiator

Smack

Copyright © 2003-2007 Jive Software.