CThreadPool Class Reference#include <ThreadPool.h>
Inheritance diagram for CThreadPool:
![]()
Collaboration diagram for CThreadPool:
![]()
Detailed DescriptionDefinition at line 62 of file ThreadPool.h. Member Typedef Documentation
Definition at line 81 of file ThreadPool.h.
Definition at line 71 of file ThreadPool.h.
Definition at line 76 of file ThreadPool.h.
Definition at line 67 of file ThreadPool.h.
Constructor & Destructor Documentation
Definition at line 61 of file ThreadPool.cpp. 00065 : CErrorHandler(), 00066 m_ulThreadCount(ulNumberOfThreads), 00067 m_pSemaphore(NULL), 00068 m_ppThreads(NULL), 00069 m_pCSection(NULL), 00070 m_ulJobsCount(0), 00071 m_ppThreadData(NULL), 00072 m_iMaxJobsPending(ulMaxJobsPending), 00073 m_pCSectionCounter(NULL), 00074 m_iRunningThreads(0), 00075 m_bInitialized(FALSE), 00076 m_dwSleepInterval(1), 00077 m_bDrop(FALSE), 00078 m_iTotalJobsRan(0), 00079 m_bInitializeCOM(bInitializeCOM) 00080 { 00081 try 00082 { 00083 //Set our name 00084 SetName(CThreadPool_Class); 00085 00086 //Check number of threads are legal 00087 if (!ulNumberOfThreads) 00088 { 00089 //Report it 00090 ReportError("CThreadPool","Received zero threads!"); 00091 00092 //Throw and error 00093 throw std::string("Received zero threads!"); 00094 } 00095 00096 //Create the semaphore 00097 m_pSemaphore=COSManager::CreateSemaphore(0, 00098 m_iMaxJobsPending); 00099 00100 //Create the CS 00101 m_pCSection=COSManager::CreateCriticalSection(); 00102 m_pCSectionCounter=COSManager::CreateCriticalSection(); 00103 00104 //Initialize the threads 00105 m_bInitialized=SpawnThreads(pInitializeProc, 00106 aPriority, 00107 m_bInitializeCOM); 00108 } 00109 ERROR_HANDLER_RETHROW("CThreadPool") 00110 }
Definition at line 112 of file ThreadPool.cpp. 00113 { 00114 try 00115 { 00116 //Clear the threads 00117 ClearThreads(); 00118 00119 //Delete the semaphore 00120 delete m_pSemaphore; 00121 00122 //Delete the CS 00123 delete m_pCSection; 00124 delete m_pCSectionCounter; 00125 } 00126 ERROR_HANDLER("~CThreadPool") 00127 }
Member Function Documentation
Definition at line 611 of file ThreadPool.cpp. 00612 { 00613 try 00614 { 00615 //Lock the CS 00616 CCriticalAutoRelease aRelease(m_pCSection); 00617 00618 //Check we can have if 00619 if (!m_ulJobsCount) 00620 return; 00621 00622 //Delete the data 00623 m_aJobList.clear(); 00624 m_ulJobsCount=0; 00625 } 00626 ERROR_HANDLER("Clear") 00627 }
Definition at line 218 of file ErrorHandler.cpp. 00219 { 00220 try 00221 { 00222 //Try to look it in the errors 00223 if (!CErrorsRepository::GetInstance().GetErrorsMap().empty()) 00224 { 00225 //Search 00226 CErrorsRepository::ErrorMap::const_iterator aIterator; 00227 aIterator=CErrorsRepository::GetInstance().GetErrorsMap().find(dwErrorCode); 00228 00229 //Do we have it 00230 if (aIterator!=CErrorsRepository::GetInstance().GetErrorsMap().end()) 00231 return aIterator->second; 00232 } 00233 00234 //Get the error string 00235 LPVOID lpMsgBuf; 00236 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 00237 FORMAT_MESSAGE_FROM_SYSTEM | 00238 FORMAT_MESSAGE_IGNORE_INSERTS, 00239 NULL, 00240 dwErrorCode, 00241 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language 00242 (LPTSTR) &lpMsgBuf, 00243 0, 00244 NULL); 00245 00246 //Save it 00247 std::string sMessage; 00248 00249 //Do we have the message? 00250 if (lpMsgBuf) 00251 { 00252 //Save it 00253 sMessage=(char*)lpMsgBuf; 00254 00255 //Release the buffer 00256 LocalFree(lpMsgBuf); 00257 } 00258 else 00259 //Failed to find 00260 sMessage="No error description found!"; 00261 00262 //Done 00263 return sMessage; 00264 } 00265 catch (...) 00266 { 00267 return "Unknown"; 00268 } 00269 }
Definition at line 140 of file ErrorHandler.cpp. 00144 { 00145 //Our message 00146 std::string sMsg; 00147 00148 //Is it an error? 00149 if (bError) 00150 sMsg="*** Error *** "; 00151 else 00152 sMsg="### Msg ### "; 00153 00154 //Add the data now 00155 sMsg+="in "+rClass; 00156 sMsg+=":"+rMethod; 00157 sMsg+=" - " + rMsgOrError; 00158 00159 //Done 00160 return sMsg; 00161 }
Definition at line 572 of file ErrorHandler.cpp. 00573 { 00574 try 00575 { 00576 //Our string 00577 std::string sDate; 00578 00579 //Our tmp buf 00580 char cTmp[128]; 00581 00582 //Get date 00583 _strdate(cTmp); 00584 sDate=cTmp; 00585 sDate+=' '; 00586 00587 //Get time 00588 _strtime(cTmp); 00589 sDate+=cTmp; 00590 00591 //Done 00592 return sDate; 00593 } 00594 ERROR_HANDLER_STATIC_RETURN(CErrorHandler_Class,"GetCurrentDateTime","") 00595 }
Definition at line 546 of file ThreadPool.cpp. 00547 { 00548 try 00549 { 00550 //Lock the CS 00551 CCriticalAutoRelease aRelease(m_pCSection); 00552 00553 //Save the number of jobs 00554 int iJobs; 00555 iJobs=m_ulJobsCount; 00556 00557 //And return it 00558 return iJobs; 00559 } 00560 ERROR_HANDLER_RETURN("GetWaitingJobs",0) 00561 }
Definition at line 597 of file ErrorHandler.cpp. 00599 { 00600 try 00601 { 00602 //Add the error 00603 CErrorsRepository::GetInstance().GetErrorsMap().insert(CErrorsRepository::ErrorMap::value_type(dwErrorCode,rDescription)); 00604 } 00605 ERROR_HANDLER_STATIC(CErrorHandler_Class,"RegisterError") 00606 }
Definition at line 271 of file ErrorHandler.cpp. 00274 { 00275 if (!GetLog()) 00276 return; 00277 00278 try 00279 { 00280 //Convert the error code 00281 char aTmp[11]; 00282 sprintf(aTmp,"%d",iErrorCode); 00283 00284 //Get the string for it 00285 std::string sError; 00286 sError=rMessage; 00287 sError+=", and Socket error: "; 00288 sError+=aTmp; 00289 sError+=", "; 00290 sError+=ErrorCodeToString(iErrorCode); 00291 00292 //Report to the log 00293 WriteError(m_sClassName, 00294 rMethod, 00295 sError); 00296 } 00297 ERROR_UNKNOWN("ReportError") 00298 }
Definition at line 300 of file ErrorHandler.cpp. 00302 { 00303 if (!GetLog()) 00304 return; 00305 00306 try 00307 { 00308 //Convert the error code 00309 char aTmp[11]; 00310 sprintf(aTmp,"%d",iErrorCode); 00311 00312 //Get the string for it 00313 std::string sError; 00314 sError="Socket error: "; 00315 sError+=aTmp; 00316 sError+=", "; 00317 sError+=ErrorCodeToString(iErrorCode); 00318 00319 //Report to the log 00320 WriteError(m_sClassName, 00321 rMethod, 00322 sError); 00323 } 00324 ERROR_UNKNOWN("ReportError") 00325 }
Definition at line 416 of file ErrorHandler.cpp. 00419 { 00420 if (!GetLog()) 00421 return; 00422 00423 try 00424 { 00425 //Create the new message 00426 std::string sNewMessage(rMessage); 00427 sNewMessage+=", Additional data: "; 00428 sNewMessage+=rAdditionalData; 00429 00430 //Report to the log 00431 WriteError(m_sClassName, 00432 rMethod, 00433 sNewMessage); 00434 } 00435 ERROR_UNKNOWN("ReportError") 00436 }
Definition at line 438 of file ErrorHandler.cpp. 00441 { 00442 if (!GetLog()) 00443 return; 00444 00445 try 00446 { 00447 //Convert the number 00448 char aTmp[11]; 00449 ltoa(dwAdditionalData,aTmp,10); 00450 00451 //Create the new message 00452 std::string sNewMessage(rMessage); 00453 sNewMessage+=", Additional data: "; 00454 sNewMessage+=aTmp; 00455 00456 //Report to the log 00457 WriteError(m_sClassName, 00458 rMethod, 00459 sNewMessage); 00460 } 00461 ERROR_UNKNOWN("ReportError") 00462 }
Definition at line 327 of file ErrorHandler.cpp. 00329 { 00330 if (!GetLog()) 00331 return; 00332 00333 try 00334 { 00335 //Report to the log 00336 WriteError(m_sClassName, 00337 rMethod, 00338 rMessage); 00339 } 00340 ERROR_UNKNOWN("ReportError") 00341 }
Definition at line 470 of file ErrorHandler.cpp. 00471 { 00472 if (!GetLog()) 00473 return; 00474 00475 try 00476 { 00477 //Get the last error 00478 DWORD dwLastError; 00479 dwLastError=GetLastError(); 00480 00481 //Report the error 00482 WriteError(m_sClassName, 00483 rMethod, 00484 ErrorCodeToString(dwLastError)); 00485 } 00486 ERROR_UNKNOWN("ReportError") 00487 }
Definition at line 378 of file ErrorHandler.cpp. 00380 { 00381 if (!GetLog()) 00382 return; 00383 00384 try 00385 { 00386 //Get the last error 00387 DWORD dwLastError; 00388 dwLastError=GetLastError(); 00389 00390 //Format the message 00391 std::string sMessage; 00392 sMessage=rMessage; 00393 sMessage+=", with error code: "; 00394 00395 //Convert the error code 00396 char aTmp[11]; 00397 itoa(dwLastError,aTmp,10); 00398 00399 //Add it again 00400 sMessage+=aTmp; 00401 sMessage+=" "; 00402 sMessage+=ErrorCodeToString(dwLastError); 00403 00404 //Get the log 00405 CErrorLog* pLog; 00406 pLog=GetLog(); 00407 00408 //Report to the log 00409 WriteError(m_sClassName, 00410 rMethod, 00411 sMessage); 00412 } 00413 ERROR_UNKNOWN("ReportErrorOS") 00414 }
Definition at line 540 of file ErrorHandler.cpp. 00544 { 00545 if (!m_pLog) 00546 return; 00547 00548 try 00549 { 00550 //Convert the number 00551 char aTmp[11]; 00552 ltoa(dwAdditionalData,aTmp,10); 00553 00554 //Create the new message 00555 std::string sNewMessage(rMessage); 00556 sNewMessage+=", Additional data: "; 00557 sNewMessage+=aTmp; 00558 00559 //Report to the log 00560 WriteStaticError(rClass, 00561 rMethod, 00562 sNewMessage); 00563 } 00564 ERROR_UNKNOWN("ReportStaticError") 00565 }
Definition at line 523 of file ErrorHandler.cpp. 00526 { 00527 if (!m_pLog) 00528 return; 00529 00530 try 00531 { 00532 //Report to the log 00533 WriteStaticError(rClass, 00534 rMethod, 00535 rMessage); 00536 } 00537 ERROR_UNKNOWN("ReportStaticError") 00538 }
Definition at line 503 of file ErrorHandler.cpp. 00505 { 00506 if (!m_pLog) 00507 return; 00508 00509 try 00510 { 00511 //Get the last error 00512 DWORD dwLastError; 00513 dwLastError=GetLastError(); 00514 00515 //Report the error 00516 WriteStaticError(rClass, 00517 rMethod, 00518 ErrorCodeToString(dwLastError)); 00519 } 00520 ERROR_UNKNOWN("ReportStaticError") 00521 }
Definition at line 343 of file ErrorHandler.cpp. 00346 { 00347 if (!m_pLog) 00348 return; 00349 00350 try 00351 { 00352 //Get the last error 00353 DWORD dwLastError; 00354 dwLastError=GetLastError(); 00355 00356 //Format the message 00357 std::string sMessage; 00358 sMessage=rMessage; 00359 sMessage+=", with error code: "; 00360 00361 //Convert the error code 00362 char aTmp[11]; 00363 itoa(dwLastError,aTmp,10); 00364 00365 //Add it again 00366 sMessage+=aTmp; 00367 sMessage+=" "; 00368 sMessage+=ErrorCodeToString(dwLastError); 00369 00370 //Report to the log 00371 WriteStaticError(rClass, 00372 rMethod, 00373 sMessage); 00374 } 00375 ERROR_UNKNOWN("ReportStaticError") 00376 }
Definition at line 241 of file ThreadPool.cpp. 00243 { 00244 try 00245 { 00246 return SubmitJob(NULL, 00247 NULL, 00248 pJobProc, 00249 lpData); 00250 } 00251 ERROR_HANDLER_RETURN("SubmitJob",FALSE) 00252 }
Definition at line 228 of file ThreadPool.cpp. 00230 { 00231 try 00232 { 00233 return SubmitJob(NULL, 00234 pJobProc, 00235 NULL, 00236 lpData); 00237 } 00238 ERROR_HANDLER_RETURN("SubmitJob",FALSE) 00239 }
Definition at line 215 of file ThreadPool.cpp. 00217 { 00218 try 00219 { 00220 return SubmitJob(pJobProc, 00221 NULL, 00222 NULL, 00223 lpData); 00224 } 00225 ERROR_HANDLER_RETURN("SubmitJob",FALSE) 00226 }
Definition at line 163 of file ErrorHandler.cpp. 00166 { 00167 //Do we have a log? 00168 if (!GetLog()) 00169 return; 00170 00171 //Format the msg 00172 std::string sError; 00173 sError=FormatData(rClass, 00174 rMethod, 00175 rError); 00176 00177 //Write it 00178 GetLog()->WriteError(sError); 00179 }
Definition at line 199 of file ErrorHandler.cpp. 00202 { 00203 //Do we have a log? 00204 if (!GetLog()) 00205 return; 00206 00207 //Format the msg 00208 std::string sMsg; 00209 sMsg=FormatData(rClass, 00210 rMethod, 00211 rMessage, 00212 true); 00213 00214 //Write it 00215 GetLog()->WriteMessage(sMsg); 00216 }
Definition at line 181 of file ErrorHandler.cpp. 00184 { 00185 //Do we have a log? 00186 if (!m_pLog) 00187 return; 00188 00189 //Format the msg 00190 std::string sError; 00191 sError=FormatData(rClass, 00192 rMethod, 00193 rError); 00194 00195 //Write it 00196 m_pLog->WriteError(sError); 00197 }
The documentation for this class was generated from the following files: |