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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TransportNegotiator.Ice
Ice transport negotiator.static class
TransportNegotiator.RawUdp
Raw-UDP transport negotiator.
-
Field Summary
Fields Modifier and Type Field Description static int
CANDIDATES_ACCEPT_PERIOD
-
Fields inherited from class org.jivesoftware.smackx.jingleold.JingleNegotiator
session
-
-
Constructor Summary
Constructors Constructor Description TransportNegotiator(JingleSession session, TransportResolver transResolver, ContentNegotiator parentNegotiator)
Default constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract boolean
acceptableTransportCandidate(TransportCandidate tc, java.util.List<TransportCandidate> localCandidates)
Return true if the transport candidate is acceptable for the current negotiator.void
close()
Called from above to session-terminate.java.util.List<IQ>
dispatchIncomingPacket(IQ iq, java.lang.String id)
Dispatch an incoming packet.protected void
doStart()
Called from above to start the negotiator during a session-initiate.TransportCandidate
getAcceptedLocalCandidate()
Get the best accepted local candidate we have offered.TransportCandidate
getBestLocalCandidate()
Obtain the best local candidate we want to offer.abstract TransportCandidate
getBestRemoteCandidate()
Obtain the best common transport candidate obtained in the negotiation.JingleTransport
getJingleTransport()
Return a JingleTransport that best reflects this transport negotiator.abstract JingleTransport
getJingleTransport(TransportCandidate cand)
Get a new instance of the right TransportNegotiator class with this candidate.java.util.List<TransportCandidate>
getOfferedCandidates()
java.util.Iterator<TransportCandidate>
getValidRemoteCandidates()
Get an iterator for the list of valid (ie, checked) remote candidates.boolean
isFullyEstablished()
Return true if the transport is fully established.-
Methods inherited from class org.jivesoftware.smackx.jingleold.JingleNegotiator
addExpectedId, addListener, getConnection, getListenersList, getNegotiatorState, getSession, isExpectedId, isStarted, removeExpectedId, removeListener, setNegotiatorState, setSession, start
-
-
-
-
Field Detail
-
CANDIDATES_ACCEPT_PERIOD
public static final int CANDIDATES_ACCEPT_PERIOD
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
TransportNegotiator
public TransportNegotiator(JingleSession session, TransportResolver transResolver, ContentNegotiator parentNegotiator)
Default constructor.- Parameters:
session
- The Jingle sessiontransResolver
- The JingleTransportManager to useparentNegotiator
- the parent ngeotiator.
-
-
Method Detail
-
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, java.util.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 classJingleNegotiator
-
close
public void close()
Called from above to session-terminate.- Overrides:
close
in classJingleNegotiator
-
getJingleTransport
public JingleTransport getJingleTransport()
Return a JingleTransport that best reflects this transport negotiator.- Returns:
- the jingle transport.
-
getOfferedCandidates
public java.util.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 java.util.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 java.util.List<IQ> dispatchIncomingPacket(IQ iq, java.lang.String id) throws XMPPException, SmackException, java.lang.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 classJingleNegotiator
- Parameters:
iq
- the stanza receivedid
- the ID of the response that will be sent- Returns:
- the new Jingle stanza to send.
- Throws:
XMPPException
- if an XMPP protocol error was received.SmackException
- if Smack detected an exceptional situation.java.lang.InterruptedException
- if the calling thread was interrupted.
-
-