Class TransportNegotiator

java.lang.Object
org.jivesoftware.smackx.jingleold.JingleNegotiator
org.jivesoftware.smackx.jingleold.nat.TransportNegotiator
Direct Known Subclasses:
TransportNegotiator.Ice, TransportNegotiator.RawUdp

public abstract class TransportNegotiator extends JingleNegotiator
Transport negotiator. This class is responsible for managing the transport negotiation process, handling all the stanza interchange and the stage control.
  • Field Details

    • CANDIDATES_ACCEPT_PERIOD

      public static final int CANDIDATES_ACCEPT_PERIOD
      See Also:
  • Constructor Details

    • TransportNegotiator

      public TransportNegotiator(JingleSession session, TransportResolver transResolver, ContentNegotiator parentNegotiator)
      Default constructor.
      Parameters:
      session - The Jingle session
      transResolver - The JingleTransportManager to use
      parentNegotiator - the parent negotiator.
  • Method Details

    • getJingleTransport

      public abstract JingleTransport getJingleTransport(TransportCandidate cand)
      Get a new instance of the right TransportNegotiator class with this candidate.
      Parameters:
      cand - the transport candidate.
      Returns:
      A TransportNegotiator instance
    • acceptableTransportCandidate

      public abstract boolean acceptableTransportCandidate(TransportCandidate tc, List<TransportCandidate> localCandidates)
      Return true if the transport candidate is acceptable for the current negotiator.
      Parameters:
      tc - the transport candidate.
      localCandidates - a list of local transport candidates.
      Returns:
      true if the transport candidate is acceptable
    • getBestLocalCandidate

      public final TransportCandidate getBestLocalCandidate()
      Obtain the best local candidate we want to offer.
      Returns:
      the best local candidate
    • getAcceptedLocalCandidate

      public TransportCandidate getAcceptedLocalCandidate()
      Get the best accepted local candidate we have offered.
      Returns:
      a transport candidate we have offered.
    • doStart

      protected void doStart()
      Called from above to start the negotiator during a session-initiate.
      Specified by:
      doStart in class JingleNegotiator
    • close

      public void close()
      Called from above to session-terminate.
      Overrides:
      close in class JingleNegotiator
    • getJingleTransport

      public JingleTransport getJingleTransport()
      Return a JingleTransport that best reflects this transport negotiator.
      Returns:
      the jingle transport.
    • getOfferedCandidates

      public List<TransportCandidate> getOfferedCandidates()
    • getBestRemoteCandidate

      public abstract TransportCandidate getBestRemoteCandidate()
      Obtain the best common transport candidate obtained in the negotiation.
      Returns:
      the bestRemoteCandidate
    • isFullyEstablished

      public final boolean isFullyEstablished()
      Return true if the transport is fully established.
      Returns:
      true if the transport is fully established.
    • getValidRemoteCandidates

      public final Iterator<TransportCandidate> getValidRemoteCandidates()
      Get an iterator for the list of valid (ie, checked) remote candidates.
      Returns:
      The iterator for the list of valid (ie, already checked) remote candidates.
    • dispatchIncomingPacket

      public final List<org.jivesoftware.smack.packet.IQ> dispatchIncomingPacket(org.jivesoftware.smack.packet.IQ iq, String id) throws org.jivesoftware.smack.XMPPException, org.jivesoftware.smack.SmackException, InterruptedException
      Dispatch an incoming packet. The method is responsible for recognizing the stanza type and, depending on the current state, delivering the stanza to the right event handler and wait for a response.
      Specified by:
      dispatchIncomingPacket in class JingleNegotiator
      Parameters:
      iq - the stanza received
      id - the ID of the response that will be sent
      Returns:
      the new Jingle stanza to send.
      Throws:
      org.jivesoftware.smack.XMPPException - if an XMPP protocol error was received.
      org.jivesoftware.smack.SmackException - if Smack detected an exceptional situation.
      InterruptedException - if the calling thread was interrupted.