27 #ifndef OPAL_SIP_ICE_H
28 #define OPAL_SIP_ICE_H
39 #include <ptclib/pstunsrvr.h>
45 #define OPAL_OPT_ICE_TIMEOUT "ICE-Timeout"
52 #define OPAL_OPT_ICE_LITE "ICE-Lite"
59 #define OPAL_OPT_TRICKLE_ICE "Trickle-ICE"
64 #define OPAL_OPT_NETWORK_COST_ICE "Network-Cost-ICE"
73 OpalICEMediaTransport(
const PString & name);
77 virtual void SetCandidates(
const PString & user,
const PString & pass,
const PNatCandidateList & candidates);
78 virtual bool GetCandidates(PString & user, PString & pass, PNatCandidateList & candidates,
bool offering);
85 class ICEChannel :
public PIndirectChannel
87 PCLASSINFO(ICEChannel, PIndirectChannel);
89 ICEChannel(OpalICEMediaTransport & owner, SubChannels subchannel, PChannel * channel);
90 virtual PBoolean Read(
void * buf, PINDEX len);
92 OpalICEMediaTransport & m_owner;
93 SubChannels m_subchannel;
95 bool InternalHandleICE(SubChannels subchannel,
const void * buf, PINDEX len);
96 virtual void InternalRxData(SubChannels subchannel,
const PBYTEArray & data);
101 PString m_localUsername;
102 PString m_localPassword;
103 PString m_remoteUsername;
104 PString m_remotePassword;
105 PTimeInterval m_iceTimeout;
108 bool m_useNetworkCost;
112 e_CandidateInProgress,
120 typedef OpalCandidateStatistics CandidateStateBase;
122 typedef PNatCandidate CandidateStateBase;
124 struct CandidateState : CandidateStateBase
126 CandidateStates m_state;
129 CandidateState(
const PNatCandidate & cand)
130 : CandidateStateBase(cand)
131 , m_state(e_CandidateInProgress)
135 typedef std::list<CandidateState> CandidateStateList;
136 typedef std::vector<CandidateStateList> CandidatesArray;
137 friend bool operator!=(
const CandidatesArray & left,
const CandidatesArray & right);
139 CandidatesArray m_localCandidates;
140 CandidatesArray m_remoteCandidates;
151 ICEState GetICEState()
const;
153 PSTUNServer m_server;
154 PSTUNClient m_client;
156 PNatCandidate m_selectedCandidate;
162 #endif // OPAL_SIP_ICE_H
Definition: transports.h:151