void QtJaCommanderThread::run() { QList<ja_host_request_header_t *>::iterator i; ja_host_request_header_t *temp; while(1){ //qDebug() << "Thread::stop called from main thread: "<<currentThreadId(); //assume asynchrony request first priority asynchronyLock.lock(); while(!asynchronyList.isEmpty()) { i = asynchronyList.begin(); releaseBusLock.lock(); //performTransfer(i); temp = (*i); performTransfer(temp); //emit tiggerTransfer(temp); //do asynchrony releaseBusLock.unlock(); //remove it from asynchronyList. asynchronyList.removeFirst(); } asynchronyLock.unlock(); periodicLock.lock(); i = periodicList.begin(); while (i != periodicList.end()) { releaseBusLock.lock(); //do periodic //1. check count = 0, means need perform a transfer. if (((*i)->status) && JA_REQUEST_TRIGGER){ //performTransfer(i); temp = *i; performTransfer(temp); //emit tiggerTransfer(temp); (*i)->status &= ~JA_REQUEST_TRIGGER; } ++i; releaseBusLock.unlock(); } periodicLock.unlock(); //exec(); } }
void CURLEasySession::beginTransfer (bool transferIsUpload, bool performOnBackgroundThread) { isUpload = transferIsUpload; shouldStopTransfer = false; if (performOnBackgroundThread) { CURLManager::getInstance()->addTimeSliceClient (this); CURLManager::getInstance()->startThread(); } else { performTransfer (isUpload); } }
//============================================================================== int CURLEasySession::useTimeSlice() { performTransfer (isUpload); return -1; }