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 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 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 403 of file PeriodicThread.cpp. 00404 { 00405 try 00406 { 00407 //Set the priority 00408 m_pThread->SetPriority(aPriority); 00409 } 00410 ERROR_HANDLER("SetPriority") 00411 }
Definition at line 388 of file PeriodicThread.cpp. 00389 { 00390 try 00391 { 00392 //Save it 00393 m_dwThreadTimeout=dwTimeout; 00394 } 00395 ERROR_HANDLER("SetThreadTimeout") 00396 }
Definition at line 237 of file PeriodicThread.cpp. 00240 { 00241 try 00242 { 00243 //Is the interval legal 00244 if (!dwInterval) 00245 { 00246 //Report it 00247 ReportError("Start","Invalid interval!"); 00248 00249 //Exit 00250 return FALSE; 00251 } 00252 00253 //Are we running 00254 if (m_dwInterval || 00255 m_pEnterEvent || 00256 m_pExitEvent) 00257 { 00258 //Report it 00259 ReportError("Start","Already running!"); 00260 00261 //Exit 00262 return FALSE; 00263 } 00264 00265 //We are not aborting 00266 m_bAbort=FALSE; 00267 00268 //Create all 00269 m_pEnterEvent=COSManager::CreateEvent(); 00270 m_pExitEvent=COSManager::CreateEvent(); 00271 00272 //Save the user data 00273 m_lpData=lpData; 00274 00275 //Save the interval 00276 m_dwInterval=dwInterval; 00277 m_bWaitOneInterval=bWaitOneInterval; 00278 00279 //Set it to auto delete 00280 m_pThread->SetAutoDelete(TRUE); 00281 00282 //Run the thread 00283 m_pThread->Start((LPVOID)this); 00284 00285 //Wait for the event 00286 if (m_pEnterEvent->Wait(m_dwThreadTimeout) || 00287 m_bAbort) 00288 { 00289 //Report it 00290 if (m_bAbort) 00291 ReportError("Start","User aborted!"); 00292 else 00293 ReportError("Start","Timeout waiting for thread!"); 00294 00295 //Delete it all 00296 delete m_pThread; 00297 m_pThread=COSManager::CreateThread(PeriodicThread); 00298 00299 //The events 00300 delete m_pEnterEvent; 00301 m_pEnterEvent=NULL; 00302 00303 delete m_pExitEvent; 00304 m_pExitEvent=NULL; 00305 00306 //Exit 00307 return FALSE; 00308 } 00309 else 00310 return TRUE; 00311 } 00312 ERROR_HANDLER_RETURN("Start",FALSE) 00313 }
Definition at line 315 of file PeriodicThread.cpp. 00316 { 00317 try 00318 { 00319 if (m_bDestructor) 00320 if (!m_pEnterEvent || 00321 !m_pExitEvent) 00322 { 00323 //Just delete the thread 00324 delete m_pThread; 00325 00326 //Exit 00327 return TRUE; 00328 } 00329 else 00330 ; 00331 else 00332 //Are we running 00333 if (!m_pEnterEvent || 00334 !m_pExitEvent) 00335 { 00336 //Report it 00337 ReportError("Stop","Not running!"); 00338 00339 //Exit 00340 return FALSE; 00341 } 00342 00343 //Are we aborted 00344 if (!m_bAbort) 00345 { 00346 //The thread ID 00347 DWORD dwThreadID; 00348 dwThreadID=m_pThread->GetThreadID(); 00349 00350 //Call the thread 00351 m_pExitEvent->Set(); 00352 00353 //Wait for the thread 00354 if (GetCurrentThreadId()!=dwThreadID && 00355 m_pEnterEvent->Wait(m_dwThreadTimeout)) 00356 { 00357 //Report it 00358 ReportError("Stop","Timeout waiting for thread!"); 00359 00360 //Delete it by force 00361 delete m_pThread; 00362 } 00363 } 00364 00365 //Delete it all 00366 m_pThread=NULL; 00367 00368 //Do we need to recreate 00369 if (!m_bDestructor) 00370 m_pThread=COSManager::CreateThread(PeriodicThread); 00371 00372 //The events 00373 delete m_pEnterEvent; 00374 m_pEnterEvent=NULL; 00375 00376 delete m_pExitEvent; 00377 m_pExitEvent=NULL; 00378 00379 //Set the interval 00380 m_dwInterval=0; 00381 00382 //Done 00383 return TRUE; 00384 } 00385 ERROR_HANDLER_RETURN("Stop",FALSE) 00386 }
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: |