Smack

org.jivesoftware.smackx.filetransfer
Class StreamNegotiator

java.lang.Object
  extended by org.jivesoftware.smackx.filetransfer.StreamNegotiator
Direct Known Subclasses:
FaultTolerantNegotiator, IBBTransferNegotiator, Socks5TransferNegotiator

public abstract class StreamNegotiator
extends java.lang.Object

After the file transfer negotiation process is completed according to JEP-0096, the negotiation process is passed off to a particular stream negotiator. The stream negotiator will then negotiate the chosen stream and return the stream to transfer the file.

Author:
Alexander Wenckus

Constructor Summary
StreamNegotiator()
           
 
Method Summary
abstract  void cleanup()
          Cleanup any and all resources associated with this negotiator.
 IQ createError(java.lang.String from, java.lang.String to, java.lang.String packetID, XMPPError xmppError)
           
abstract  java.io.InputStream createIncomingStream(StreamInitiation initiation)
          This method handles the file stream download negotiation process.
 StreamInitiation createInitiationAccept(StreamInitiation streamInitiationOffer, java.lang.String[] namespaces)
          Creates the initiation acceptance packet to forward to the stream initiator.
abstract  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.
abstract  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.
abstract  java.lang.String[] getNamespaces()
          Returns the XMPP namespace reserved for this particular type of file transfer.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StreamNegotiator

public StreamNegotiator()
Method Detail

createInitiationAccept

public StreamInitiation createInitiationAccept(StreamInitiation streamInitiationOffer,
                                               java.lang.String[] namespaces)
Creates the initiation acceptance packet to forward to the stream initiator.

Parameters:
streamInitiationOffer - The offer from the stream initiator to connect for a stream.
namespaces - The namespace that relates to the accepted means of transfer.
Returns:
The response to be forwarded to the initiator.

createError

public IQ createError(java.lang.String from,
                      java.lang.String to,
                      java.lang.String packetID,
                      XMPPError xmppError)

getInitiationPacketFilter

public abstract 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.

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.

createIncomingStream

public abstract java.io.InputStream createIncomingStream(StreamInitiation initiation)
                                                  throws XMPPException,
                                                         java.lang.InterruptedException
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.

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.
java.lang.InterruptedException - If thread is interrupted.

createOutgoingStream

public abstract java.io.OutputStream createOutgoingStream(java.lang.String streamID,
                                                          java.lang.String initiator,
                                                          java.lang.String target)
                                                   throws XMPPException
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.

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.

getNamespaces

public abstract java.lang.String[] getNamespaces()
Returns the XMPP namespace reserved for this particular type of file transfer.

Returns:
Returns the XMPP namespace reserved for this particular type of file transfer.

cleanup

public abstract void cleanup()
Cleanup any and all resources associated with this negotiator.


Smack

Copyright © 2003-2007 Jive Software.