Class IBBTransferNegotiator

java.lang.Object
org.jivesoftware.smack.Manager
org.jivesoftware.smackx.filetransfer.StreamNegotiator
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.
See Also:
  • Constructor Details

    • IBBTransferNegotiator

      protected IBBTransferNegotiator(org.jivesoftware.smack.XMPPConnection connection)
      The default constructor for the In-Band Bytestream Negotiator.
      Parameters:
      connection - The connection which this negotiator works on.
  • Method Details

    • createOutgoingStream

      public OutputStream createOutgoingStream(String streamID, org.jxmpp.jid.Jid initiator, org.jxmpp.jid.Jid target) throws org.jivesoftware.smack.SmackException.NoResponseException, org.jivesoftware.smack.XMPPException.XMPPErrorException, org.jivesoftware.smack.SmackException.NotConnectedException, InterruptedException
      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:
      InterruptedException - if the calling thread was interrupted.
      org.jivesoftware.smack.SmackException.NoResponseException
      org.jivesoftware.smack.XMPPException.XMPPErrorException
      org.jivesoftware.smack.SmackException.NotConnectedException
    • createIncomingStream

      public InputStream createIncomingStream(StreamInitiation initiation) throws org.jivesoftware.smack.SmackException.NoResponseException, org.jivesoftware.smack.XMPPException.XMPPErrorException, org.jivesoftware.smack.SmackException.NotConnectedException, InterruptedException
      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:
      org.jivesoftware.smack.XMPPException.XMPPErrorException - If an error occurs during this process an XMPPException is thrown.
      InterruptedException - If thread is interrupted.
      org.jivesoftware.smack.SmackException.NoResponseException
      org.jivesoftware.smack.SmackException.NotConnectedException
    • newStreamInitiation

      public void newStreamInitiation(org.jxmpp.jid.Jid from, String streamID)
      Description copied from class: StreamNegotiator
      Signal that a new stream initiation arrived. The negotiator may needs to prepare for it.
      Specified by:
      newStreamInitiation in class StreamNegotiator
      Parameters:
      from - The initiator of the file transfer.
      streamID - The stream ID related to the transfer.
    • getNamespace

      public String getNamespace()
      Description copied from class: StreamNegotiator
      Returns the XMPP namespace reserved for this particular type of file transfer.
      Specified by:
      getNamespace in class StreamNegotiator
      Returns:
      Returns the XMPP namespace reserved for this particular type of file transfer.