CPeriodicThread Class Reference#include <PeriodicThread.h>
Inheritance diagram for CPeriodicThread:
![]()
Collaboration diagram for CPeriodicThread:
![]()
Detailed DescriptionDefinition at line 50 of file PeriodicThread.h. Member Typedef Documentation
Definition at line 65 of file PeriodicThread.h.
Definition at line 69 of file PeriodicThread.h.
Member Enumeration Documentation
Definition at line 54 of file PeriodicThread.h. 00055 { 00056 tsStart, 00057 tsBody, 00058 tsEnd 00059 } ThreadStage;
Constructor & Destructor Documentation
Definition at line 53 of file PeriodicThread.cpp. 00053 : CErrorHandler(), 00054 m_pThread(NULL), 00055 m_pUserProc(pProc), 00056 m_pEnterEvent(NULL), 00057 m_pExitEvent(NULL), 00058 m_dwInterval(0), 00059 m_dwThreadTimeout(20000), 00060 m_bDestructor(FALSE), 00061 m_bAbort(FALSE), 00062 m_pUserProcNoInit(NULL) 00063 { 00064 try 00065 { 00066 //Set our name 00067 SetName(CPeriodicThread_Class); 00068 00069 //Allocate the thread 00070 m_pThread=COSManager::CreateThread(PeriodicThread); 00071 } 00072 ERROR_HANDLER("CPeriodicThread") 00073 }
Definition at line 75 of file PeriodicThread.cpp. 00075 : CErrorHandler(), 00076 m_pThread(NULL), 00077 m_pUserProc(NULL), 00078 m_pEnterEvent(NULL), 00079 m_pExitEvent(NULL), 00080 m_dwInterval(0), 00081 m_dwThreadTimeout(20000), 00082 m_bDestructor(FALSE), 00083 m_bAbort(FALSE), 00084 m_pUserProcNoInit(pProc) 00085 { 00086 try 00087 { 00088 //Set our name 00089 SetName(CPeriodicThread_Class); 00090 00091 //Allocate the thread 00092 m_pThread=COSManager::CreateThread(PeriodicThread); 00093 } 00094 ERROR_HANDLER("CPeriodicThread") 00095 }
Definition at line 97 of file PeriodicThread.cpp. 00098 { 00099 try 00100 { 00101 //Indicate tremination 00102 m_bDestructor=TRUE; 00103 00104 //Delete our thread 00105 Stop(); 00106 } 00107 ERROR_HANDLER("~CPeriodicThread") 00108 }
Member Function Documentation
Definition at line 680 of file ErrorHandler.cpp. 00681 { 00682 //Delete the logs 00683 delete m_pSecondLevelLog; 00684 m_pSecondLevelLog=NULL; 00685 00686 delete m_pThirdLevelLog; 00687 m_pThirdLevelLog=NULL; 00688 }
Definition at line 251 of file ErrorHandler.cpp. 00252 { 00253 try 00254 { 00255 //Try to look it in the errors 00256 if (!CErrorsRepository::GetInstance().GetErrorsMap().empty()) 00257 { 00258 //Search 00259 CErrorsRepository::ErrorMap::const_iterator aIterator; 00260 aIterator=CErrorsRepository::GetInstance().GetErrorsMap().find(dwErrorCode); 00261 00262 //Do we have it 00263 if (aIterator!=CErrorsRepository::GetInstance().GetErrorsMap().end()) 00264 return aIterator->second; 00265 } 00266 00267 //Get the error string 00268 LPVOID lpMsgBuf; 00269 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 00270 FORMAT_MESSAGE_FROM_SYSTEM | 00271 FORMAT_MESSAGE_IGNORE_INSERTS, 00272 NULL, 00273 dwErrorCode, 00274 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language 00275 (LPTSTR) &lpMsgBuf, 00276 0, 00277 NULL); 00278 00279 //Save it 00280 std::string sMessage; 00281 00282 //Do we have the message? 00283 if (lpMsgBuf) 00284 { 00285 //Save it 00286 sMessage=(char*)lpMsgBuf; 00287 00288 //Release the buffer 00289 LocalFree(lpMsgBuf); 00290 } 00291 else 00292 //Failed to find 00293 sMessage="No error description found!"; 00294 00295 //Done 00296 return sMessage; 00297 } 00298 catch (...) 00299 { 00300 return "Unknown"; 00301 } 00302 }
Definition at line 145 of file ErrorHandler.cpp. 00149 { 00150 //Our message 00151 std::string sMsg; 00152 00153 //Is it an error? 00154 if (bError) 00155 sMsg="*** Error *** "; 00156 else 00157 sMsg="### Msg ### "; 00158 00159 //Add the data now 00160 sMsg+="in "+rClass; 00161 sMsg+="::"+rMethod; 00162 sMsg+=" - " + rMsgOrError; 00163 00164 //Done 00165 return sMsg; 00166 }
Definition at line 622 of file ErrorHandler.cpp. 00623 { 00624 try 00625 { 00626 //Our string 00627 std::string sDate; 00628 00629 //Our tmp buf 00630 char cTmp[128]; 00631 00632 //Get date 00633 _strdate(cTmp); 00634 sDate=cTmp; 00635 sDate+=' '; 00636 00637 //Get time 00638 _strtime(cTmp); 00639 sDate+=cTmp; 00640 00641 //Done 00642 return sDate; 00643 } 00644 ERROR_HANDLER_STATIC_RETURN(CErrorHandler_Class,"GetCurrentDateTime","") 00645 }
Definition at line 658 of file ErrorHandler.cpp. 00659 { 00660 //Do we have log 00661 if (!m_pSecondLevelLog) 00662 //Create it 00663 m_pSecondLevelLog=new CErrorHandler; 00664 00665 //Return it 00666 return m_pSecondLevelLog; 00667 }
Definition at line 669 of file ErrorHandler.cpp. 00670 { 00671 //Do we have log 00672 if (!m_pThirdLevelLog) 00673 //Create it 00674 m_pThirdLevelLog=new CErrorHandler; 00675 00676 //Return it 00677 return m_pThirdLevelLog; 00678 }
Definition at line 647 of file ErrorHandler.cpp. 00649 { 00650 try 00651 { 00652 //Add the error 00653 CErrorsRepository::GetInstance().GetErrorsMap().insert(CErrorsRepository::ErrorMap::value_type(dwErrorCode,rDescription)); 00654 } 00655 ERROR_HANDLER_STATIC(CErrorHandler_Class,"RegisterError") 00656 }
Definition at line 304 of file ErrorHandler.cpp. 00307 { 00308 if (!GetLog()) 00309 return; 00310 00311 try 00312 { 00313 //Convert the error code 00314 char aTmp[11]; 00315 sprintf(aTmp,"%d",iErrorCode); 00316 00317 //Get the string for it 00318 std::string sError; 00319 sError=rMessage; 00320 sError+=", and Socket error: "; 00321 sError+=aTmp; 00322 sError+=", "; 00323 sError+=ErrorCodeToString(iErrorCode); 00324 00325 //Report to the log 00326 WriteError(m_sClassName, 00327 rMethod, 00328 sError); 00329 } 00330 ERROR_UNKNOWN("ReportError") 00331 }
Definition at line 333 of file ErrorHandler.cpp. 00335 { 00336 if (!GetLog()) 00337 return; 00338 00339 try 00340 { 00341 //Convert the error code 00342 char aTmp[11]; 00343 sprintf(aTmp,"%d",iErrorCode); 00344 00345 //Get the string for it 00346 std::string sError; 00347 sError="Socket error: "; 00348 sError+=aTmp; 00349 sError+=", "; 00350 sError+=ErrorCodeToString(iErrorCode); 00351 00352 //Report to the log 00353 WriteError(m_sClassName, 00354 rMethod, 00355 sError); 00356 } 00357 ERROR_UNKNOWN("ReportError") 00358 }
Definition at line 461 of file ErrorHandler.cpp. 00464 { 00465 if (!GetLog()) 00466 return; 00467 00468 try 00469 { 00470 //Create the new message 00471 std::string sNewMessage(rMessage); 00472 sNewMessage+=", Additional data: "; 00473 sNewMessage+=rAdditionalData; 00474 00475 //Report to the log 00476 WriteError(m_sClassName, 00477 rMethod, 00478 sNewMessage); 00479 } 00480 ERROR_UNKNOWN("ReportError") 00481 }
Definition at line 483 of file ErrorHandler.cpp. 00486 { 00487 if (!GetLog()) 00488 return; 00489 00490 try 00491 { 00492 //Convert the number 00493 char aTmp[11]; 00494 ltoa(dwAdditionalData,aTmp,10); 00495 00496 //Create the new message 00497 std::string sNewMessage(rMessage); 00498 sNewMessage+=", Additional data: "; 00499 sNewMessage+=aTmp; 00500 00501 //Report to the log 00502 WriteError(m_sClassName, 00503 rMethod, 00504 sNewMessage); 00505 } 00506 ERROR_UNKNOWN("ReportError") 00507 }
Definition at line 376 of file ErrorHandler.cpp. 00378 { 00379 if (!GetLog()) 00380 return; 00381 00382 try 00383 { 00384 //Report to the log 00385 WriteError(m_sClassName, 00386 rMethod, 00387 rMessage); 00388 } 00389 ERROR_UNKNOWN("ReportError") 00390 }
Definition at line 515 of file ErrorHandler.cpp. 00516 { 00517 if (!GetLog()) 00518 return; 00519 00520 try 00521 { 00522 //Get the last error 00523 DWORD dwLastError; 00524 dwLastError=GetLastError(); 00525 00526 //Report the error 00527 WriteError(m_sClassName, 00528 rMethod, 00529 ErrorCodeToString(dwLastError)); 00530 } 00531 ERROR_UNKNOWN("ReportError") 00532 }
Definition at line 427 of file ErrorHandler.cpp. 00429 { 00430 if (!GetLog()) 00431 return; 00432 00433 try 00434 { 00435 //Get the last error 00436 DWORD dwLastError; 00437 dwLastError=GetLastError(); 00438 00439 //Format the message 00440 std::string sMessage; 00441 sMessage=rMessage; 00442 sMessage+=", with error code: "; 00443 00444 //Convert the error code 00445 char aTmp[11]; 00446 itoa(dwLastError,aTmp,10); 00447 00448 //Add it again 00449 sMessage+=aTmp; 00450 sMessage+=" "; 00451 sMessage+=ErrorCodeToString(dwLastError); 00452 00453 //Report to the log 00454 WriteError(m_sClassName, 00455 rMethod, 00456 sMessage); 00457 } 00458 ERROR_UNKNOWN("ReportErrorOS") 00459 }
Definition at line 590 of file ErrorHandler.cpp. 00594 { 00595 if (!m_pLog) 00596 return; 00597 00598 try 00599 { 00600 //Convert the number 00601 char aTmp[11]; 00602 ltoa(dwAdditionalData,aTmp,10); 00603 00604 //Create the new message 00605 std::string sNewMessage(rMessage); 00606 sNewMessage+=", Additional data: "; 00607 sNewMessage+=aTmp; 00608 00609 //Report to the log 00610 WriteStaticError(rClass, 00611 rMethod, 00612 sNewMessage); 00613 } 00614 ERROR_UNKNOWN("ReportStaticError") 00615 }
Definition at line 573 of file ErrorHandler.cpp. 00576 { 00577 if (!m_pLog) 00578 return; 00579 00580 try 00581 { 00582 //Report to the log 00583 WriteStaticError(rClass, 00584 rMethod, 00585 rMessage); 00586 } 00587 ERROR_UNKNOWN("ReportStaticError") 00588 }
Definition at line 553 of file ErrorHandler.cpp. 00555 { 00556 if (!m_pLog) 00557 return; 00558 00559 try 00560 { 00561 //Get the last error 00562 DWORD dwLastError; 00563 dwLastError=GetLastError(); 00564 00565 //Report the error 00566 WriteStaticError(rClass, 00567 rMethod, 00568 ErrorCodeToString(dwLastError)); 00569 } 00570 ERROR_UNKNOWN("ReportStaticError") 00571 }
Definition at line 392 of file ErrorHandler.cpp. 00395 { 00396 if (!m_pLog) 00397 return; 00398 00399 try 00400 { 00401 //Get the last error 00402 DWORD dwLastError; 00403 dwLastError=GetLastError(); 00404 00405 //Format the message 00406 std::string sMessage; 00407 sMessage=rMessage; 00408 sMessage+=", with error code: "; 00409 00410 //Convert the error code 00411 char aTmp[11]; 00412 itoa(dwLastError,aTmp,10); 00413 00414 //Add it again 00415 sMessage+=aTmp; 00416 sMessage+=" "; 00417 sMessage+=ErrorCodeToString(dwLastError); 00418 00419 //Report to the log 00420 WriteStaticError(rClass, 00421 rMethod, 00422 sMessage); 00423 } 00424 ERROR_UNKNOWN("ReportStaticError") 00425 }
Definition at line 543 of file ErrorHandler.cpp. 00545 { 00546 //Save the log 00547 m_pLocalLog=pLog; 00548 00549 //Save the write to main flag 00550 m_bWriteToMain=bWriteToMain; 00551 }
Definition at line 408 of file PeriodicThread.cpp. 00409 { 00410 try 00411 { 00412 //Set the priority 00413 m_pThread->SetPriority(aPriority); 00414 } 00415 ERROR_HANDLER("SetPriority") 00416 }
Definition at line 393 of file PeriodicThread.cpp. 00394 { 00395 try 00396 { 00397 //Save it 00398 m_dwThreadTimeout=dwTimeout; 00399 } 00400 ERROR_HANDLER("SetThreadTimeout") 00401 }
Definition at line 237 of file PeriodicThread.cpp. 00241 { 00242 try 00243 { 00244 //Is the interval legal 00245 if (!dwInterval) 00246 { 00247 //Report it 00248 ReportError("Start","Invalid interval!"); 00249 00250 //Exit 00251 return FALSE; 00252 } 00253 00254 //Are we running 00255 if (m_dwInterval || 00256 m_pEnterEvent || 00257 m_pExitEvent) 00258 { 00259 //Report it 00260 ReportError("Start","Already running!"); 00261 00262 //Exit 00263 return FALSE; 00264 } 00265 00266 //We are not aborting 00267 m_bAbort=FALSE; 00268 00269 //Create all 00270 m_pEnterEvent=COSManager::CreateEvent(); 00271 m_pExitEvent=COSManager::CreateEvent(); 00272 00273 //Save the user data 00274 m_lpData=lpData; 00275 00276 //Save the interval 00277 m_dwInterval=dwInterval; 00278 m_bWaitOneInterval=bWaitOneInterval; 00279 00280 //Set it to auto delete 00281 m_pThread->SetAutoDelete(TRUE); 00282 00283 //Run the thread 00284 m_pThread->Start((LPVOID)this); 00285 00286 //Wait for the event 00287 if (!bIgnoreEventsOnStartup && 00288 (m_pEnterEvent->Wait(m_dwThreadTimeout) || 00289 m_bAbort)) 00290 { 00291 //Report it 00292 if (m_bAbort) 00293 ReportError("Start","User aborted!"); 00294 else 00295 ReportError("Start","Timeout waiting for thread!"); 00296 00297 //Delete it all 00298 delete m_pThread; 00299 m_pThread=COSManager::CreateThread(PeriodicThread); 00300 00301 //The events 00302 delete m_pEnterEvent; 00303 m_pEnterEvent=NULL; 00304 00305 delete m_pExitEvent; 00306 m_pExitEvent=NULL; 00307 00308 //Exit 00309 return FALSE; 00310 } 00311 else 00312 return TRUE; 00313 } 00314 ERROR_HANDLER_RETURN("Start",FALSE) 00315 }
Definition at line 317 of file PeriodicThread.cpp. 00318 { 00319 try 00320 { 00321 if (m_bDestructor) 00322 if (!m_pEnterEvent || 00323 !m_pExitEvent) 00324 { 00325 //Just delete the thread 00326 delete m_pThread; 00327 00328 //Exit 00329 return TRUE; 00330 } 00331 else 00332 ; 00333 else 00334 //Are we running 00335 if (!m_pEnterEvent || 00336 !m_pExitEvent) 00337 { 00338 //Report it 00339 ReportError("Stop","Not running!"); 00340 00341 //Exit 00342 return FALSE; 00343 } 00344 00345 //Are we aborted 00346 if (!m_bAbort) 00347 { 00348 //The thread ID 00349 DWORD dwThreadID; 00350 dwThreadID=m_pThread->GetThreadID(); 00351 00352 //Reset the enter event 00353 m_pEnterEvent->Reset(); 00354 00355 //Call the thread 00356 m_pExitEvent->Set(); 00357 00358 //Wait for the thread 00359 if (GetCurrentThreadId()!=dwThreadID && 00360 m_pEnterEvent->Wait(m_dwThreadTimeout)) 00361 { 00362 //Report it 00363 ReportError("Stop","Timeout waiting for thread!"); 00364 00365 //Delete it by force 00366 delete m_pThread; 00367 } 00368 } 00369 00370 //Delete it all 00371 m_pThread=NULL; 00372 00373 //Do we need to recreate 00374 if (!m_bDestructor) 00375 m_pThread=COSManager::CreateThread(PeriodicThread); 00376 00377 //The events 00378 delete m_pEnterEvent; 00379 m_pEnterEvent=NULL; 00380 00381 delete m_pExitEvent; 00382 m_pExitEvent=NULL; 00383 00384 //Set the interval 00385 m_dwInterval=0; 00386 00387 //Done 00388 return TRUE; 00389 } 00390 ERROR_HANDLER_RETURN("Stop",FALSE) 00391 }
Definition at line 168 of file ErrorHandler.cpp. 00171 { 00172 //Do we have a log? 00173 if (!GetLog()) 00174 return; 00175 00176 //Format the msg 00177 std::string sError; 00178 sError=FormatData(rClass, 00179 rMethod, 00180 rError); 00181 00182 //Write it 00183 GetLog()->WriteError(sError); 00184 00185 //Write to main 00186 if (m_bWriteToMain && 00187 m_pLog) 00188 //Write it 00189 m_pLog->WriteError(sError); 00190 }
Definition at line 360 of file ErrorHandler.cpp. 00362 { 00363 if (!GetLog()) 00364 return; 00365 00366 try 00367 { 00368 //Report to the log 00369 WriteMessage(m_sClassName, 00370 rMethod, 00371 rMessage); 00372 } 00373 ERROR_UNKNOWN("WriteMessage") 00374 }
Definition at line 226 of file ErrorHandler.cpp. 00229 { 00230 //Do we have a log? 00231 if (!GetLog()) 00232 return; 00233 00234 //Format the msg 00235 std::string sMsg; 00236 sMsg=FormatData(rClass, 00237 rMethod, 00238 rMessage, 00239 false); 00240 00241 //Write it 00242 GetLog()->WriteMessage(sMsg); 00243 00244 //Write to main 00245 if (m_bWriteToMain && 00246 m_pLog) 00247 //Write it 00248 m_pLog->WriteMessage(sMsg); 00249 }
Definition at line 192 of file ErrorHandler.cpp. 00195 { 00196 //Do we have a log? 00197 if (!m_pLog) 00198 return; 00199 00200 //Format the msg 00201 std::string sError; 00202 sError=FormatData(rClass, 00203 rMethod, 00204 rError); 00205 00206 //Write it 00207 m_pLog->WriteError(sError); 00208 }
Definition at line 210 of file ErrorHandler.cpp. 00213 { 00214 //Do we have a log? 00215 if (!m_pLog) 00216 return; 00217 00218 //Format the msg 00219 std::string sMsg; 00220 sMsg=FormatData(rClass, 00221 rMethod, 00222 rMessage, 00223 false); 00224 }
The documentation for this class was generated from the following files: |