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;
}