#include "../Include_i.h"
Macros | |
#define | LOG_CLASS "IceAgent" |
Functions | |
STATUS | createIceAgent (PCHAR username, PCHAR password, PIceAgentCallbacks pIceAgentCallbacks, PRtcConfiguration pRtcConfiguration, TIMER_QUEUE_HANDLE timerQueueHandle, PConnectionListener pConnectionListener, PIceAgent *ppIceAgent) |
STATUS | freeIceAgent (PIceAgent *ppIceAgent) |
STATUS | iceAgentValidateKvsRtcConfig (PKvsRtcConfiguration pKvsRtcConfiguration) |
STATUS | iceAgentReportNewLocalCandidate (PIceAgent pIceAgent, PIceCandidate pIceCandidate) |
STATUS | iceAgentAddRemoteCandidate (PIceAgent pIceAgent, PCHAR pIceCandidateString) |
STATUS | iceAgentInitHostCandidate (PIceAgent pIceAgent) |
STATUS | iceAgentStartAgent (PIceAgent pIceAgent, PCHAR remoteUsername, PCHAR remotePassword, BOOL isControlling) |
STATUS | iceAgentStartGathering (PIceAgent pIceAgent) |
STATUS | iceAgentSendPacket (PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen) |
STATUS | iceAgentPopulateSdpMediaDescriptionCandidates (PIceAgent pIceAgent, PSdpMediaDescription pSdpMediaDescription, UINT32 attrBufferLen, PUINT32 pIndex) |
STATUS | iceAgentShutdown (PIceAgent pIceAgent) |
STATUS | iceAgentRestart (PIceAgent pIceAgent, PCHAR localIceUfrag, PCHAR localIcePwd) |
STATUS | findCandidateWithIp (PKvsIpAddress pIpAddress, PDoubleList pCandidateList, PIceCandidate *ppIceCandidate) |
STATUS | findCandidateWithSocketConnection (PSocketConnection pSocketConnection, PDoubleList pCandidateList, PIceCandidate *ppIceCandidate) |
STATUS | createIceCandidatePairs (PIceAgent pIceAgent, PIceCandidate pIceCandidate, BOOL isRemoteCandidate) |
STATUS | freeIceCandidatePair (PIceCandidatePair *ppIceCandidatePair) |
STATUS | insertIceCandidatePair (PDoubleList iceCandidatePairs, PIceCandidatePair pIceCandidatePair) |
STATUS | findIceCandidatePairWithLocalSocketConnectionAndRemoteAddr (PIceAgent pIceAgent, PSocketConnection pSocketConnection, PKvsIpAddress pRemoteAddr, BOOL checkPort, PIceCandidatePair *ppIceCandidatePair) |
STATUS | pruneUnconnectedIceCandidatePair (PIceAgent pIceAgent) |
STATUS | iceCandidatePairCheckConnection (PStunPacket pStunBindingRequest, PIceAgent pIceAgent, PIceCandidatePair pIceCandidatePair) |
STATUS | iceAgentSendStunPacket (PStunPacket pStunPacket, PBYTE password, UINT32 passwordLen, PIceAgent pIceAgent, PIceCandidate pLocalCandidate, PKvsIpAddress pDestAddr) |
STATUS | iceAgentStateTransitionTimerCallback (UINT32 timerId, UINT64 currentTime, UINT64 customData) |
STATUS | iceAgentSendSrflxCandidateRequest (PIceAgent pIceAgent) |
STATUS | iceAgentCheckCandidatePairConnection (PIceAgent pIceAgent) |
STATUS | iceAgentSendKeepAliveTimerCallback (UINT32 timerId, UINT64 currentTime, UINT64 customData) |
STATUS | iceAgentGatherCandidateTimerCallback (UINT32 timerId, UINT64 currentTime, UINT64 customData) |
STATUS | iceAgentSendCandidateNomination (PIceAgent pIceAgent) |
STATUS | iceAgentInitSrflxCandidate (PIceAgent pIceAgent) |
STATUS | iceAgentInitRelayCandidates (PIceAgent pIceAgent) |
STATUS | turnStateFailedFn (PSocketConnection pSocketConnection, UINT64 data) |
STATUS | iceAgentInitRelayCandidate (PIceAgent pIceAgent, UINT32 iceServerIndex, KVS_SOCKET_PROTOCOL protocol) |
STATUS | iceAgentCheckConnectionStateSetup (PIceAgent pIceAgent) |
STATUS | updateCandidateStats (PIceAgent pIceAgent, BOOL isRemote) |
STATUS | updateSelectedLocalRemoteCandidateStats (PIceAgent pIceAgent) |
STATUS | iceAgentConnectedStateSetup (PIceAgent pIceAgent) |
STATUS | iceAgentNominatingStateSetup (PIceAgent pIceAgent) |
STATUS | iceAgentReadyStateSetup (PIceAgent pIceAgent) |
STATUS | iceAgentNominateCandidatePair (PIceAgent pIceAgent) |
STATUS | iceAgentInvalidateCandidatePair (PIceAgent pIceAgent) |
STATUS | incomingRelayedDataHandler (UINT64 customData, PSocketConnection pSocketConnection, PBYTE pBuffer, UINT32 bufferLen, PKvsIpAddress pSrc, PKvsIpAddress pDest) |
STATUS | incomingDataHandler (UINT64 customData, PSocketConnection pSocketConnection, PBYTE pBuffer, UINT32 bufferLen, PKvsIpAddress pSrc, PKvsIpAddress pDest) |
STATUS | iceCandidateSerialize (PIceCandidate pIceCandidate, PCHAR pOutputData, PUINT32 pOutputLength) |
STATUS | handleStunPacket (PIceAgent pIceAgent, PBYTE pBuffer, UINT32 bufferLen, PSocketConnection pSocketConnection, PKvsIpAddress pSrcAddr, PKvsIpAddress pDestAddr) |
STATUS | iceAgentCheckPeerReflexiveCandidate (PIceAgent pIceAgent, PKvsIpAddress pIpAddress, UINT32 priority, BOOL isRemote, PSocketConnection pSocketConnection) |
STATUS | iceAgentFatalError (PIceAgent pIceAgent, STATUS errorStatus) |
VOID | iceAgentLogNewCandidate (PIceCandidate pIceCandidate) |
STATUS | updateCandidateAddress (PIceCandidate pIceCandidate, PKvsIpAddress pIpAddr) |
UINT32 | computeCandidatePriority (PIceCandidate pIceCandidate) |
UINT64 | computeCandidatePairPriority (PIceCandidatePair pIceCandidatePair, BOOL isLocalControlling) |
PCHAR | iceAgentGetCandidateTypeStr (ICE_CANDIDATE_TYPE candidateType) |
UINT64 | iceAgentGetCurrentTime (UINT64 customData) |
STATUS | getIceAgentStats (PIceAgent pIceAgent, PKvsIceAgentMetrics pKvsIceAgentMetrics) |
Variables | |
StateMachineState | ICE_AGENT_STATE_MACHINE_STATES [] |
UINT32 | ICE_AGENT_STATE_MACHINE_STATE_COUNT |
#define LOG_CLASS "IceAgent" |
Ice Agent APIs
UINT64 computeCandidatePairPriority | ( | PIceCandidatePair | pIceCandidatePair, |
BOOL | isLocalControlling | ||
) |
UINT32 computeCandidatePriority | ( | PIceCandidate | pIceCandidate | ) |
STATUS createIceAgent | ( | PCHAR | username, |
PCHAR | password, | ||
PIceAgentCallbacks | pIceAgentCallbacks, | ||
PRtcConfiguration | pRtcConfiguration, | ||
TIMER_QUEUE_HANDLE | timerQueueHandle, | ||
PConnectionListener | pConnectionListener, | ||
PIceAgent * | ppIceAgent | ||
) |
allocate the IceAgent struct and store username and password
- | PCHAR - IN - username |
- | PCHAR - IN - password |
- | PIceAgentCallbacks - IN - callback for inbound packets |
- | PRtcConfiguration - IN - RtcConfig |
- | PIceAgent* - OUT - the created IceAgent struct |
STATUS createIceCandidatePairs | ( | PIceAgent | pIceAgent, |
PIceCandidate | pIceCandidate, | ||
BOOL | isRemoteCandidate | ||
) |
STATUS findCandidateWithIp | ( | PKvsIpAddress | pIpAddress, |
PDoubleList | pCandidateList, | ||
PIceCandidate * | ppIceCandidate | ||
) |
STATUS findCandidateWithSocketConnection | ( | PSocketConnection | pSocketConnection, |
PDoubleList | pCandidateList, | ||
PIceCandidate * | ppIceCandidate | ||
) |
STATUS findIceCandidatePairWithLocalSocketConnectionAndRemoteAddr | ( | PIceAgent | pIceAgent, |
PSocketConnection | pSocketConnection, | ||
PKvsIpAddress | pRemoteAddr, | ||
BOOL | checkPort, | ||
PIceCandidatePair * | ppIceCandidatePair | ||
) |
STATUS freeIceAgent | ( | PIceAgent * | ppIceAgent | ) |
Not thread-safe
ppIceAgent |
STATUS freeIceCandidatePair | ( | PIceCandidatePair * | ppIceCandidatePair | ) |
STATUS getIceAgentStats | ( | PIceAgent | pIceAgent, |
PKvsIceAgentMetrics | pKvsIceAgentMetrics | ||
) |
STATUS handleStunPacket | ( | PIceAgent | pIceAgent, |
PBYTE | pBuffer, | ||
UINT32 | bufferLen, | ||
PSocketConnection | pSocketConnection, | ||
PKvsIpAddress | pSrcAddr, | ||
PKvsIpAddress | pDestAddr | ||
) |
STATUS iceAgentAddRemoteCandidate | ( | PIceAgent | pIceAgent, |
PCHAR | pIceCandidateString | ||
) |
if PIceCandidate doesnt exist already in remoteCandidates, create a copy and add to remoteCandidates
- | PIceAgent - IN - IceAgent object |
- | PIceCandidate - IN - new remote candidate to add |
STATUS iceAgentCheckCandidatePairConnection | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentCheckConnectionStateSetup | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentCheckPeerReflexiveCandidate | ( | PIceAgent | pIceAgent, |
PKvsIpAddress | pIpAddress, | ||
UINT32 | priority, | ||
BOOL | isRemote, | ||
PSocketConnection | pSocketConnection | ||
) |
STATUS iceAgentConnectedStateSetup | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentFatalError | ( | PIceAgent | pIceAgent, |
STATUS | errorStatus | ||
) |
STATUS iceAgentGatherCandidateTimerCallback | ( | UINT32 | timerId, |
UINT64 | currentTime, | ||
UINT64 | customData | ||
) |
PCHAR iceAgentGetCandidateTypeStr | ( | ICE_CANDIDATE_TYPE | candidateType | ) |
UINT64 iceAgentGetCurrentTime | ( | UINT64 | customData | ) |
STATUS iceAgentInitHostCandidate | ( | PIceAgent | pIceAgent | ) |
gather local ip addresses and create a udp port. If port creation succeeded then create a new candidate and store it in localCandidates. Ips that are already a local candidate will not be added again.
- | PIceAgent - IN - IceAgent object |
STATUS iceAgentInitRelayCandidate | ( | PIceAgent | pIceAgent, |
UINT32 | iceServerIndex, | ||
KVS_SOCKET_PROTOCOL | protocol | ||
) |
STATUS iceAgentInitRelayCandidates | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentInitSrflxCandidate | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentInvalidateCandidatePair | ( | PIceAgent | pIceAgent | ) |
VOID iceAgentLogNewCandidate | ( | PIceCandidate | pIceCandidate | ) |
STATUS iceAgentNominateCandidatePair | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentNominatingStateSetup | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentPopulateSdpMediaDescriptionCandidates | ( | PIceAgent | pIceAgent, |
PSdpMediaDescription | pSdpMediaDescription, | ||
UINT32 | attrBufferLen, | ||
PUINT32 | pIndex | ||
) |
Starting from given index, fillout PSdpMediaDescription->sdpAttributes with serialize local candidate strings.
- | PIceAgent - IN - IceAgent object |
- | PSdpMediaDescription - IN - PSdpMediaDescription object whose sdpAttributes will be filled with local candidate strings |
- | UINT32 - IN - buffer length of pSdpMediaDescription->sdpAttributes[index].attributeValue |
- | PUINT32 - IN - starting index in sdpAttributes |
STATUS iceAgentReadyStateSetup | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentReportNewLocalCandidate | ( | PIceAgent | pIceAgent, |
PIceCandidate | pIceCandidate | ||
) |
STATUS iceAgentRestart | ( | PIceAgent | pIceAgent, |
PCHAR | localIceUfrag, | ||
PCHAR | localIcePwd | ||
) |
Restart IceAgent. IceAgent is reset back to the same state when it was first created. Once iceAgentRestart() return, call iceAgentStartGathering() to start gathering and call iceAgentStartAgent() to give iceAgent the new remote uFrag and uPwd. While Ice is restarting, iceAgentSendPacket can still be called to send data if a connected pair exists.
- | PIceAgent - IN - IceAgent object |
- | PCHAR - IN - new local uFrag |
- | PCHAR - IN - new local uPwd |
STATUS iceAgentSendCandidateNomination | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentSendKeepAliveTimerCallback | ( | UINT32 | timerId, |
UINT64 | currentTime, | ||
UINT64 | customData | ||
) |
STATUS iceAgentSendPacket | ( | PIceAgent | pIceAgent, |
PBYTE | pBuffer, | ||
UINT32 | bufferLen | ||
) |
Send data through selected connection. PIceAgent has to be in ICE_AGENT_CONNECTION_STATE_CONNECTED state.
- | PIceAgent - IN - IceAgent object |
- | PBYTE - IN - buffer storing the data to be sent |
- | UINT32 - IN - length of data |
STATUS iceAgentSendSrflxCandidateRequest | ( | PIceAgent | pIceAgent | ) |
STATUS iceAgentSendStunPacket | ( | PStunPacket | pStunPacket, |
PBYTE | password, | ||
UINT32 | passwordLen, | ||
PIceAgent | pIceAgent, | ||
PIceCandidate | pLocalCandidate, | ||
PKvsIpAddress | pDestAddr | ||
) |
STATUS iceAgentShutdown | ( | PIceAgent | pIceAgent | ) |
Start shutdown sequence for IceAgent. Once the function returns Ice will not deliver anymore data and IceAgent is ready to be freed. User should stop calling iceAgentSendPacket after iceAgentShutdown returns. iceAgentShutdown is idempotent.
- | PIceAgent - IN - IceAgent object |
STATUS iceAgentStartAgent | ( | PIceAgent | pIceAgent, |
PCHAR | remoteUsername, | ||
PCHAR | remotePassword, | ||
BOOL | isControlling | ||
) |
Initiates stun communication with remote candidates.
- | PIceAgent - IN - IceAgent object |
- | PCHAR - IN - remote username |
- | PCHAR - IN - remote password |
- | BOOL - IN - is controlling agent |
STATUS iceAgentStartGathering | ( | PIceAgent | pIceAgent | ) |
Initiates candidate gathering
- | PIceAgent - IN - IceAgent object |
STATUS iceAgentStateTransitionTimerCallback | ( | UINT32 | timerId, |
UINT64 | currentTime, | ||
UINT64 | customData | ||
) |
timer queue callbacks are interlocked by time queue lock.
timerId | - timer queue task id |
currentTime | |
customData | - custom data passed to timer queue when task was added |
STATUS iceAgentValidateKvsRtcConfig | ( | PKvsRtcConfiguration | pKvsRtcConfiguration | ) |
STATUS iceCandidatePairCheckConnection | ( | PStunPacket | pStunBindingRequest, |
PIceAgent | pIceAgent, | ||
PIceCandidatePair | pIceCandidatePair | ||
) |
STATUS iceCandidateSerialize | ( | PIceCandidate | pIceCandidate, |
PCHAR | pOutputData, | ||
PUINT32 | pOutputLength | ||
) |
Serialize a candidate for Trickle ICE or exchange via SDP
- | PIceAgent - IN - IceAgent object |
- | PCHAR - OUT - Destination buffer |
- | UINT32 - OUT - Size of destination buffer |
STATUS incomingDataHandler | ( | UINT64 | customData, |
PSocketConnection | pSocketConnection, | ||
PBYTE | pBuffer, | ||
UINT32 | bufferLen, | ||
PKvsIpAddress | pSrc, | ||
PKvsIpAddress | pDest | ||
) |
STATUS incomingRelayedDataHandler | ( | UINT64 | customData, |
PSocketConnection | pSocketConnection, | ||
PBYTE | pBuffer, | ||
UINT32 | bufferLen, | ||
PKvsIpAddress | pSrc, | ||
PKvsIpAddress | pDest | ||
) |
STATUS insertIceCandidatePair | ( | PDoubleList | iceCandidatePairs, |
PIceCandidatePair | pIceCandidatePair | ||
) |
STATUS pruneUnconnectedIceCandidatePair | ( | PIceAgent | pIceAgent | ) |
STATUS turnStateFailedFn | ( | PSocketConnection | pSocketConnection, |
UINT64 | data | ||
) |
STATUS updateCandidateAddress | ( | PIceCandidate | pIceCandidate, |
PKvsIpAddress | pIpAddr | ||
) |
STATUS updateCandidateStats | ( | PIceAgent | pIceAgent, |
BOOL | isRemote | ||
) |
STATUS updateSelectedLocalRemoteCandidateStats | ( | PIceAgent | pIceAgent | ) |
|
extern |
|
extern |
Static definitions of the states