// Note: call once per frame S32 LLCurlRequest::process() { S32 res = 0; mProcessing = TRUE; for (curlmulti_set_t::iterator iter = mMultiSet.begin(); iter != mMultiSet.end(); ) { curlmulti_set_t::iterator curiter = iter++; LLCurl::Multi* multi = *curiter; if(!multi->isValid()) { if(multi == mActiveMulti) { mActiveMulti = NULL ; mActiveRequestCount = 0 ; } mMultiSet.erase(curiter) ; LLCurl::getCurlThread()->killMulti(multi) ; continue ; } S32 tres = multi->process(); res += tres; if (multi != mActiveMulti && tres == 0 && multi->mQueued == 0) { mMultiSet.erase(curiter); LLCurl::getCurlThread()->killMulti(multi); } } mProcessing = FALSE; return res; }
S32 LLCurlRequest::getQueued() { S32 queued = 0; for (curlmulti_set_t::iterator iter = mMultiSet.begin(); iter != mMultiSet.end(); ) { curlmulti_set_t::iterator curiter = iter++; LLCurl::Multi* multi = *curiter; if(!multi->isValid()) { if(multi == mActiveMulti) { mActiveMulti = NULL ; mActiveRequestCount = 0 ; } LLCurl::getCurlThread()->killMulti(multi); mMultiSet.erase(curiter) ; continue ; } queued += multi->mQueued; if (multi->getState() != LLCurl::Multi::STATE_READY) { ++queued; } } return queued; }
void LLCurlRequest::addMulti() { LLCurl::Multi* multi = new LLCurl::Multi(); if(!multi->isValid()) { LLCurl::getCurlThread()->killMulti(multi) ; mActiveMulti = NULL ; mActiveRequestCount = 0 ; return; } mMultiSet.insert(multi); mActiveMulti = multi; mActiveRequestCount = 0; }