LogThreadF.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. void __fastcall TLogThread::updateLedColor(TColor AColor)
  22. {
  23. try {
  24. if (FPnlState) {
  25. PostMessage((HWND)g_AppCfg.lMainWinHandle, WM_PANEL_REFRESH, 0, (LPARAM)AColor);
  26. //FPnlState->Color = AColor;
  27. //FPnlState->Refresh();
  28. }
  29. } catch(Exception &e) {}
  30. }
  31. //---------------------------------------------------------------------------
  32. DWORD __fastcall TLogThread::Process(LPVOID AParam)
  33. {
  34. IPC_LOG_MESSAGE *pLog;
  35. DWORD dwJob;
  36. TMessage Msg;
  37. MSG qMsg;
  38. TITSLog *pLogObj;
  39. TCDSCtlr *pCDSCtlr;
  40. while(!IsTerm() && !g_AppCfg.bThrExit)
  41. {
  42. updateLedColor(clGreen);
  43. if (!g_logQ.PopBlocking(dwJob))
  44. {
  45. continue;
  46. }
  47. if (dwJob == Q_CLOSE)
  48. {
  49. break;
  50. }
  51. else
  52. if (dwJob == Q_TICK)
  53. {
  54. updateLedColor(clRed);
  55. continue;
  56. }
  57. updateLedColor(clLime);
  58. pLog = (IPC_LOG_MESSAGE*)dwJob;
  59. Msg.WParam = (int)pLog;
  60. pLogObj = (TITSLog*)pLog->Obj;
  61. if (pLogObj && pLog->Write)
  62. {
  63. pLogObj->LogWrite(NULL, pLog->Kind, pLog->Msg);
  64. }
  65. try {
  66. if (pLog->Target == log_sys)
  67. {
  68. if (FrmSysLog) FrmSysLog->OnWMLogDisplayMessage(Msg);
  69. if (from_srvTcp == pLog->From || from_cliTcp == pLog->From)
  70. {
  71. if (FrmCommLog)
  72. {
  73. if (FrmCommLog->Showing && FrmCommLog->CDSCtlr == (TCDSCtlr*)pLog->Ctlr) FrmCommLog->OnWMLogDisplayMessage(Msg);
  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) FrmCommLog->OnWMLogDisplayMessage(Msg);
  84. }
  85. }
  86. }catch(Exception &e) {}
  87. //SAFE_DELETE(pLog);
  88. }
  89. Term();
  90. g_AppCfg.bThrJobExit = true;
  91. return 0;
  92. }
  93. //---------------------------------------------------------------------------