LogThreadF.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "FrmCommLogF.h"
  4. #include "FrmSysLogF.h"
  5. #include "VMSCommLibF.h"
  6. #pragma hdrstop
  7. #include "LogThreadF.h"
  8. #pragma package(smart_init)
  9. TLogThread *LogThread = NULL;
  10. //---------------------------------------------------------------------------
  11. TLogThread::TLogThread()
  12. {
  13. FPnlState = NULL;
  14. FTmrDb = NULL;
  15. }
  16. //---------------------------------------------------------------------------
  17. TLogThread::~TLogThread()
  18. {
  19. }
  20. //---------------------------------------------------------------------------
  21. DWORD __fastcall TLogThread::Process(LPVOID AParam)
  22. {
  23. IPC_LOG_MESSAGE *pLog;
  24. DWORD dwJob;
  25. TMessage Msg;
  26. MSG qMsg;
  27. TITSLog *pLogObj;
  28. TCDSCtlr *pCDSCtlr;
  29. TPanel *pState = FPnlState;
  30. while(!IsTerm() && !g_AppCfg.bThrExit)
  31. {
  32. try {
  33. if (pState) pState->Color = pState->Color == clLime ? clGreen : clRed;
  34. }catch(Exception &e) {}
  35. if (!g_logQ.PopBlocking(dwJob))
  36. {
  37. continue;
  38. }
  39. if (dwJob == Q_CLOSE)
  40. {
  41. break;
  42. }
  43. else
  44. if (dwJob == Q_TICK)
  45. {
  46. try {
  47. if (pState) pState->Color = pState->Color == clRed ? clGreen : clRed;
  48. }catch(Exception &e) {}
  49. continue;
  50. }
  51. if (pState) pState->Color = clLime;
  52. pLog = (IPC_LOG_MESSAGE*)dwJob;
  53. Msg.WParam = (int)pLog;
  54. pLogObj = (TITSLog*)pLog->Obj;
  55. if (pLogObj && pLog->Write)
  56. {
  57. pLogObj->LogWrite(NULL, pLog->Kind, pLog->Msg);
  58. }
  59. try {
  60. if (pLog->Target == log_sys)
  61. {
  62. if (FrmSysLog)
  63. {
  64. FrmSysLog->OnWMLogDisplayMessage(Msg);
  65. }
  66. if (from_srvTcp == pLog->From || from_cliTcp == pLog->From)
  67. {
  68. if (FrmCommLog)
  69. {
  70. if (FrmCommLog->Showing && FrmCommLog->CDSCtlr == (TCDSCtlr*)pLog->Ctlr)
  71. {
  72. FrmCommLog->OnWMLogDisplayMessage(Msg);
  73. }
  74. }
  75. }
  76. }
  77. else
  78. if (pLog->Target == log_com)
  79. {
  80. pCDSCtlr = (TCDSCtlr*)pLog->Ctlr;
  81. if (pCDSCtlr && FrmCommLog)
  82. {
  83. if (pCDSCtlr->FDispLog && FrmCommLog->Showing)
  84. {
  85. FrmCommLog->OnWMLogDisplayMessage(Msg);
  86. }
  87. }
  88. }
  89. }catch(Exception &e) {}
  90. //SAFE_DELETE(pLog);
  91. }
  92. Term();
  93. g_AppCfg.bThrJobExit = true;
  94. return 0;
  95. }
  96. //---------------------------------------------------------------------------