//请求TurnServer
int32_t yang_ice_requestTurnServer(YangIceSession *session,void* rtcSession,yang_turn_receive receive,char* remoteIp,int32_t remotePort){
//如果turnconn为空,则调用yang_ice_initTurn初始化turnconn
if(session->turnconn==NULL){
yang_ice_initTurn(session);
}else if(!session->isTurnAllocated){//如果isTurnAllocated为false,则返回error
return ERROR_RTC_TURN;
}
int32_t count=0;
int32_t maxWaitCount=100;
//添加Peer,传入对端的ip地址和端口号,表示跟此对端通过中继服务器进行音视频传输。
session->turnconn->addPeer(&session->turnconn->session,session->uid,rtcSession,receive,remoteIp,remotePort);
session->isTurnReady=yangfalse;
//while循环最大2秒,直到isReady,说明可以向对端传输音视频数据了
while(count<maxWaitCount&&!session->turnconn->isReady(&session->turnconn->session)){
yang_usleep(20000);
count++;
}
//如果超过最大等待次数,返回error
if(count>=maxWaitCount) {
session->isTurnReady=yangfalse;
return ERROR_RTC_TURN;
}
//否则说明已经ready了,返回OK
session->isTurnReady=yangtrue;
return Yang_Ok;
}