static void cancelTest(asynUser *pasynUser) { cmdInfo *pcmdInfo = (cmdInfo *)pasynUser->userPvt; threadInfo *pthreadInfo = pcmdInfo->pthreadInfo; asynStatus status; int wasQueued; fprintf(pcmdInfo->file,"%s %s cancelRequest should remove\n", pthreadInfo->threadName,pcmdInfo->message); startBusy(pthreadInfo); epicsEventTryWait(pcmdInfo->callbackDone); status = pasynManager->queueRequest(pasynUser,asynQueuePriorityLow,0.0); if(checkStatus(status,pthreadInfo,"testCancelRequest")) return; epicsThreadSleep(.01); status = pasynManager->cancelRequest(pasynUser,&wasQueued); if(checkStatus(status,pthreadInfo,"testCancelRequest")) return; fprintf(pcmdInfo->file,"%s %s cancelRequest wasQueued %d\n", pthreadInfo->threadName,pcmdInfo->message,wasQueued); if(!wasQueued) epicsEventMustWait(pcmdInfo->callbackDone); epicsThreadSleep(.04); /*wait for busy to complete*/ fprintf(pcmdInfo->file,"%s %s should find callback active\n", pthreadInfo->threadName,pcmdInfo->message); epicsEventTryWait(pcmdInfo->callbackDone); status = pasynManager->queueRequest(pasynUser,asynQueuePriorityLow,0.05); if(checkStatus(status,pthreadInfo,"testCancelRequest")) return; epicsThreadSleep(.01); status = pasynManager->cancelRequest(pasynUser,&wasQueued); if(checkStatus(status,pthreadInfo,"testCancelRequest")) return; fprintf(pcmdInfo->file,"%s %s cancelRequest wasQueued %d\n", pthreadInfo->threadName,pcmdInfo->message,wasQueued); if(!wasQueued) epicsEventMustWait(pcmdInfo->callbackDone); fprintf(pcmdInfo->file,"%s %s should find timeout active\n", pthreadInfo->threadName,pcmdInfo->message); startBusy(pthreadInfo); epicsEventTryWait(pcmdInfo->callbackDone); status = pasynManager->queueRequest(pasynUser,asynQueuePriorityLow,0.02); if(checkStatus(status,pthreadInfo,"testCancelRequest")) return; epicsThreadSleep(.03); status = pasynManager->cancelRequest(pasynUser,&wasQueued); if(checkStatus(status,pthreadInfo,"testCancelRequest")) return; fprintf(pcmdInfo->file,"%s %s cancelRequest wasQueued %d\n", pthreadInfo->threadName,pcmdInfo->message,wasQueued); if(!wasQueued) epicsEventMustWait(pcmdInfo->callbackDone); }
void DBConnector::RunConnect(){ DBThread* thread = new DBThread(); thread->setConnectionData(m_connData); QObject::connect(thread, SIGNAL(started()), MyApplication::TheApp(), SIGNAL(startBusy())); QObject::connect(thread, SIGNAL(finished()), MyApplication::TheApp(), SIGNAL(finishBusy())); QObject::connect(thread, SIGNAL(fireResult(bool)), this, SLOT(obtainThreadResult(bool))); thread->start(); }