Go to the source code of this file.
Classes | |
struct | RtcIceServerDiagnostics |
struct | RtcIceCandidateDiagnostics |
struct | RtcIceCandidatePairDiagnostics |
struct | IceAgentCallbacks |
struct | IceCandidate |
struct | IceCandidatePair |
struct | IceAgentProfileDiagnostics |
struct | __IceAgent |
Typedefs | |
typedef VOID(* | IceInboundPacketFunc) (UINT64, PBYTE, UINT32) |
typedef VOID(* | IceConnectionStateChangedFunc) (UINT64, UINT64) |
typedef VOID(* | IceNewLocalCandidateFunc) (UINT64, PCHAR) |
typedef struct __IceAgent | IceAgent |
typedef struct __IceAgent * | PIceAgent |
typedef struct RtcIceServerDiagnostics * | PRtcIceServerDiagnostics |
typedef struct RtcIceCandidateDiagnostics * | PRtcIceCandidateDiagnostics |
typedef struct RtcIceCandidatePairDiagnostics * | PRtcIceCandidatePairDiagnostics |
typedef struct IceAgentCallbacks * | PIceAgentCallbacks |
typedef struct IceCandidate * | PIceCandidate |
typedef struct IceCandidatePair * | PIceCandidatePair |
typedef struct IceAgentProfileDiagnostics * | PIceAgentProfileDiagnostics |
Enumerations | |
enum | ICE_CANDIDATE_STATE { ICE_CANDIDATE_STATE_NEW , ICE_CANDIDATE_STATE_VALID , ICE_CANDIDATE_STATE_INVALID } |
#define GET_STUN_PACKET_SIZE | ( | pBuf | ) | ((UINT32) getInt16(*(PINT16) ((pBuf) + SIZEOF(UINT16)))) |
#define ICE_CANDIDATE_ID_LEN 8 |
#define ICE_HASH_TABLE_BUCKET_COUNT 100 |
#define ICE_HASH_TABLE_BUCKET_LENGTH 2 |
#define ICE_PRIORITY_HOST_CANDIDATE_TYPE_PREFERENCE 126 |
#define ICE_PRIORITY_LOCAL_PREFERENCE 65535 |
#define ICE_PRIORITY_PEER_REFLEXIVE_CANDIDATE_TYPE_PREFERENCE 110 |
#define ICE_PRIORITY_RELAYED_CANDIDATE_TYPE_PREFERENCE 0 |
#define ICE_PRIORITY_SERVER_REFLEXIVE_CANDIDATE_TYPE_PREFERENCE 100 |
#define ICE_STATE_MACHINE_NAME (PCHAR) "ICE" |
#define IS_CANN_PAIR_SENDING_FROM_RELAYED | ( | p | ) | ((p)->local->iceCandidateType == ICE_CANDIDATE_TYPE_RELAYED) |
#define IS_STUN_PACKET | ( | pBuf | ) | (getInt32(*(PUINT32) ((pBuf) + STUN_HEADER_MAGIC_BYTE_OFFSET)) == STUN_HEADER_MAGIC_COOKIE) |
#define KVS_ICE_CANDIDATE_NOMINATION_TIMEOUT (12 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define KVS_ICE_CONNECTION_CHECK_POLLING_INTERVAL (50 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND) |
#define KVS_ICE_CONNECTIVITY_CHECK_TIMEOUT (12 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define KVS_ICE_DEFAULT_TIMER_START_DELAY (3 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND) |
#define KVS_ICE_DEFAULT_TURN_PROTOCOL KVS_SOCKET_PROTOCOL_TCP |
#define KVS_ICE_ENTER_STATE_DISCONNECTION_GRACE_PERIOD (2 * KVS_ICE_SEND_KEEP_ALIVE_INTERVAL) |
#define KVS_ICE_ENTER_STATE_FAILED_GRACE_PERIOD (15 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define KVS_ICE_GATHER_CANDIDATE_TIMER_POLLING_INTERVAL (50 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND) |
#define KVS_ICE_GATHER_REFLEXIVE_AND_RELAYED_CANDIDATE_TIMEOUT (10 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define KVS_ICE_MAX_CANDIDATE_PAIR_COUNT 1024 |
#define KVS_ICE_MAX_LOCAL_CANDIDATE_COUNT 100 |
#define KVS_ICE_MAX_NEW_LOCAL_CANDIDATES_TO_REPORT_AT_ONCE 10 |
#define KVS_ICE_MAX_RELAY_CANDIDATE_COUNT 4 |
#define KVS_ICE_MAX_REMOTE_CANDIDATE_COUNT 100 |
#define KVS_ICE_SEND_KEEP_ALIVE_INTERVAL (15 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define KVS_ICE_SHORT_CHECK_DELAY (50 * HUNDREDS_OF_NANOS_IN_A_MILLISECOND) |
#define KVS_ICE_STATE_READY_TIMER_POLLING_INTERVAL (1 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define KVS_ICE_TURN_CONNECTION_SHUTDOWN_TIMEOUT (1 * HUNDREDS_OF_NANOS_IN_A_SECOND) |
#define STATS_NOT_APPLICABLE_STR (PCHAR) "N/A" |
#define STUN_HEADER_MAGIC_BYTE_OFFSET 4 |
typedef struct __IceAgent IceAgent |
typedef VOID(* IceConnectionStateChangedFunc) (UINT64, UINT64) |
typedef VOID(* IceInboundPacketFunc) (UINT64, PBYTE, UINT32) |
typedef VOID(* IceNewLocalCandidateFunc) (UINT64, PCHAR) |
typedef struct __IceAgent* PIceAgent |
typedef struct IceAgentCallbacks * PIceAgentCallbacks |
typedef struct IceAgentProfileDiagnostics * PIceAgentProfileDiagnostics |
typedef struct IceCandidate * PIceCandidate |
typedef struct IceCandidatePair * PIceCandidatePair |
typedef struct RtcIceCandidateDiagnostics * PRtcIceCandidateDiagnostics |
typedef struct RtcIceCandidatePairDiagnostics * PRtcIceCandidatePairDiagnostics |
typedef struct RtcIceServerDiagnostics * PRtcIceServerDiagnostics |
enum ICE_CANDIDATE_STATE |
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 | ) |
deallocate the PIceAgent object and all its resources.
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 updateCandidateAddress | ( | PIceCandidate | pIceCandidate, |
PKvsIpAddress | pIpAddr | ||
) |
STATUS updateSelectedLocalRemoteCandidateStats | ( | PIceAgent | pIceAgent | ) |