![]() |
ThreadProc() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Private Function |
Declared in: DNSManager.h |
static BOOL ThreadProc( CPeriodicThread::ThreadStage aStage, LPVOID lpData);
Thread proc to iterate the records
try { //Only if we are running if (aStage!=CPeriodicThread::tsBody) return TRUE; //Get our class CDNSManager* pClass; pClass=(CDNSManager*)lpData; //Lock the CCsection CCriticalAutoRelease aRelease(pClass->m_pCSection); //Scan the data IDMap::iterator aIterator; aIterator=pClass->m_aData.begin(); //Our timeout vector typedef std::vector<DNSData> TimeoutVector; TimeoutVector aTimeoutVector; //Iterate it now while (aIterator!=pClass->m_aData.end()) { //Check the times if (aIterator->second.dwTimeout && GetTickCount()-aIterator->second.dwTime>aIterator->second.dwTimeout && !aIterator->second.bNotified && !aIterator->second.bTimedout) { //It's a timeout //Set ir aIterator->second.bTimedout=TRUE; aIterator->second.dwTimedoutTime=GetTickCount(); //Insert it aTimeoutVector.push_back(aIterator->second); //Next data ++aIterator; } else if (GetTickCount()-aIterator->second.dwTimedoutTime>DELETE_TIME && aIterator->second.bTimedout) { //Save the data IDMap::iterator aBackupIterator=aIterator; ++aIterator; //And delete it pClass->m_aData.erase(aBackupIterator); } else //Next data ++aIterator; } //Exit the CS aRelease.Exit(); //Spawn the timeouts TimeoutVector::const_iterator aTimeoutIterator; aTimeoutIterator=aTimeoutVector.begin(); //Iterate it while (aTimeoutIterator!=aTimeoutVector.end()) { //Spawn a timeout pClass->OnDNSTimeout(aTimeoutIterator->aQuery, aTimeoutIterator->lpData); //Next item ++aTimeoutIterator; } //Done return TRUE; } ERROR_HANDLER_STATIC_RETURN(CDNSManager_Class,"ThreadProc",THREAD_DO_NOTHING_EXIT_VALUE)
![]() |
Site content copyright © 2003 Komodia LTD.. See the About page for additional notices. This page last updated: 24 Feb 2003. |