//初始化Turn
int32_t yang_ice_initTurn(YangIceSession *session){
//如果已经初始化,则返回OK
if(session->isTurnAllocated) return Yang_Ok;
int32_t count=0;
int32_t maxWaitCount=100;
//如果turnconn为空,则调用yang_ice_getTurn获取turnconn
if(session->turnconn==NULL){
session->turnconn=yang_ice_getTurn(&session->server);
}
//调用start方法去进行turn的连接,直到isAllocated,while循环最大等待2秒。
session->turnconn->start(&session->turnconn->session);
session->isTurnAllocated=yangtrue;
while(count<maxWaitCount&&!session->turnconn->isAllocated(&session->turnconn->session)){
yang_usleep(20000);
count++;
}
//拿到中继ip地址和端口号
session->server.relayIp = session->turnconn->session.relayIp;
session->server.relayPort = session->turnconn->session.relayPort;
//如果超过了最大等待次数,则返回Error。
if(count>=maxWaitCount) {
session->isTurnAllocated=yangfalse;
session->turnconn->stop(&session->turnconn->session);
return ERROR_RTC_TURN;
}
//没超过最大次数,说明isAllocated成功。
return Yang_Ok;
}
metartc5_jz源码阅读-yang_ice_initTurn
最新推荐文章于 2024-09-16 17:44:00 发布