123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "FrmVmsLogF.h"
- #include "FrmSysLogF.h"
- #include "AppGlobalF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TFrmVmsLog *FrmVmsLog = NULL;
- //---------------------------------------------------------------------------
- __fastcall TFrmVmsLog::TFrmVmsLog(TComponent* Owner)
- : TForm(Owner)
- {
- FVmsIdx = -1;
- FVmsId = " ";
- FVmsCtlr = NULL;
- reMsg->Lines->Clear();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmVmsLog::btnClearClick(TObject *Sender)
- {
- reMsg->Lines->Clear();
- Application->ProcessMessages();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmVmsLog::btnCopyClick(TObject *Sender)
- {
- try
- {
- reMsg->SelectAll();
- reMsg->CopyToClipboard();
- }
- catch(Exception &e)
- {
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmVmsLog::OnWMLogDisplayMessage(TMessage &Msg)
- {
- if (Showing)
- {
- IPC_LOG_MESSAGE *pLog = (IPC_LOG_MESSAGE *)Msg.WParam;
- if (pLog)
- {
- IPC_LOG_MESSAGE Log;
- Log.Kind = pLog->Kind;
- Log.Flag = pLog->Flag;
- Log.Len = pLog->Len;
- Log.Tm = pLog->Tm;
- Log.Type = pLog->Type;
- memcpy(Log.Msg, pLog->Msg, sizeof(Log.Msg));
- if (chkLogPause->Checked) return;
- LogWrite(&Log);
- }
- }
- }
- //---------------------------------------------------------------------------
- void TFrmVmsLog::LogWrite(IPC_LOG_MESSAGE *ALog)
- {
- if (ALog->Type == 'S')
- {
- if (!chkServer->Checked) return;
- }
- else
- {
- if (!chkClient->Checked) return;
- }
- if (ALog->Kind == eLOG_DATA)
- {
- LogData(ALog);
- return;
- }
- try
- {
- while (reMsg->Lines->Count >= g_AppCfg.nMaxLogLines)
- reMsg->Lines->Delete(0);
- reMsg->Lines->Add(ALog->Tm.FormatString("hh:nn:ss") + String(ALog->Msg));
- }
- catch(Exception &e)
- {
- }
- }
- //---------------------------------------------------------------------------
- void TFrmVmsLog::LogData(IPC_LOG_MESSAGE *ALog)
- {
- AnsiString sTemp;
- AnsiString sTime;
- int ii, jj, pos;
- bool bFileClose = false;
- unsigned char *AData= ALog->Msg;
- if (!AData) return;
- String sLogData = "";
- if (chkLogPause->Checked) return;
- try
- {
- AnsiString sSndRcv = ALog->Flag == 1 ? "SEND" : "RECV";
- sTime = AnsiString(ALog->Tm.FormatString("hh:nn:ss"));
- if (ALog->Type == 'C')
- sTemp.printf("%s [DATA] %s Client, [%s] %d Bytes ", sTime.c_str(), FVmsId.c_str(), sSndRcv.c_str(), ALog->Len);
- else
- sTemp.printf("%s [DATA] %s Server, [%s] %d Bytes ", sTime.c_str(), FVmsId.c_str(), sSndRcv.c_str(), ALog->Len);
- reMsg->Lines->Add("");
- reMsg->Lines->Add(sTemp);
- AnsiString sLog;
- AnsiString sChar;
- AnsiString sMsg;
- for (ii = 0; ii < ALog->Len; ii += 16)
- {
- sLogData = "";
- sLog = "";
- sMsg.printf("%08Xh ", ii);
- sLog += sMsg;
- for (jj = 0; jj < 16; jj++)
- {
- pos = ii + jj;
- if (pos < ALog->Len)
- sMsg.printf(" %02X", AData[pos]);
- else
- sMsg.printf(" ");
- sLog += sMsg;
- if (jj == 7)
- {
- //sMsg.printf(" "); sLog += sMsg;
- }
- }
- sMsg.printf(" ;"); sLog += sMsg;
- for (jj = 0; jj < 16; jj++)
- {
- pos = ii + jj;
- if (pos >= ALog->Len)
- break;
- uint8_t v = AData[pos];
- sMsg.printf("%c", isprint(v) ? v : '.');
- sLog += sMsg;
- if (jj == 7)
- {
- //sMsg.printf(" "); sLog += sMsg;
- }
- }
- sLogData += sLog;
- //sLogData = sLogData.SubString(0, sLogData.Length()-2);
- reMsg->Lines->Add(sLogData);
- }
- reMsg->Lines->Add("");
- }
- catch(Exception &e)
- {
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmVmsLog::FormClose(TObject *Sender, TCloseAction &Action)
- {
- DisplayVmsLog();
- Hide();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmVmsLog::DisplayVmsLog(int AVmsIdx/*=-1*/)
- {
- VmsIterator it;
- for(it=VmsManager->FLists.FMapObject.begin(); it != VmsManager->FLists.FMapObject.end(); ++it)
- {
- TVmsCtlr *pObj = (TVmsCtlr*)it->second;
- if (!pObj->FDispLog)
- {
- pObj->FCLog->FLogCfg = g_LogCfg;
- pObj->FSLog->FLogCfg = g_LogCfg;
- }
- }
- if (FVmsCtlr)
- {
- FVmsCtlr->FDispLog = false;
- FVmsCtlr->FCLog->FLogCfg = g_LogCfg;
- FVmsCtlr->FSLog->FLogCfg = g_LogCfg;
- }
- if (AVmsIdx < 0)
- {
- FVmsCtlr = NULL;
- return;
- }
- FVmsCtlr = (TVmsCtlr*)AVmsIdx;
- FLogCfg = FVmsCtlr->FSLog->FLogCfg;
- chkInfo->Checked = FLogCfg.Info;
- chkData->Checked = FLogCfg.Data;
- chkError->Checked = FLogCfg.Error;
- chkWarning->Checked = FLogCfg.Warning;
- chkDebug->Checked = FLogCfg.Debug;
- chkDetail->Checked = FLogCfg.Detail;
- FVmsCtlr->FDispLog = true;
- FVmsId = FVmsCtlr->VmsId;
- //Caption = "VMS Log: " + FVmsCtlr->VmsId + ", " + FVmsCtlr->Name;
- Caption = FVmsCtlr->VmsId + ", " + FVmsCtlr->Name;
- btnClearClick(NULL);
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmVmsLog::btnSetLogClick(TObject *Sender)
- {
- FLogCfg.Info = chkInfo->Checked;
- FLogCfg.Data = chkData->Checked;
- FLogCfg.Error = chkError->Checked;
- FLogCfg.Warning = chkWarning->Checked;
- FLogCfg.Debug = chkDebug->Checked;
- FLogCfg.Detail = chkDetail->Checked;
- if (FVmsCtlr)
- {
- FVmsCtlr->FCLog->FLogCfg = FLogCfg;
- FVmsCtlr->FSLog->FLogCfg = FLogCfg;
- }
- }
- //---------------------------------------------------------------------------
|