📄 logplayer.h
字号:
#ifndef _LOG_PLAYER_H
#define _LOG_PLAYER_H
#include "defines.h"
#include "LogParser.h" // CLogParser,CLogParserFactory
#include "afxmt.h" // CCriticalSection
#include "GZFile.h" // CGZFile
#include <vector>
#define MAX_CYCLES 18000
/************************************************************************/
/* CParserThread Class */
/************************************************************************/
class CParserThread : public CWinThread {
public:
CParserThread(CGZFile *pLogFile,CLogParser *pParser) :
_pLogFile(pLogFile),_pParser(pParser) ,_bAlive(false)
{
m_bAutoDelete = false;
}
virtual int Run();
virtual ~CParserThread();
bool Alive() const { return _bAlive; }
protected:
virtual BOOL InitInstance();
private:
CGZFile* _pLogFile;
CLogParser* _pParser;
bool _bAlive;
};
/************************************************************************/
/* CLogPlayer Class */
/************************************************************************/
enum LogPlayerCommand{
CmdLoad,
CmdOpen,
CmdPlay,
CmdStop,
CmdForward,
CmdBackward,
CmdRewind,
CmdJump,
CmdReverse,
CmdAccelerate,
CmdDecelerate,
CmdClean, // 清除所有的东西,停止所有的动作
CmdSaveLog
};
class CMainFrame;
class CLogPlayer
{
public:
CLogPlayer(void);
~CLogPlayer(void);
void init(CMainFrame* pMainFrame) { _pMainFrame = pMainFrame ; }
bool DoCommand(LogPlayerCommand cmd,CString strValue=NULL);
bool addDispInfo(const dispinfo_t2* pInfo);
const cycle_info_t* GetDisplayInfo();
const cycle_info_t* GetLastDispInfo();
bool getCommandStatus(LogPlayerCommand cmd);
void DisplayCycle(UINT nCycle);
const server_params_t* getServerParam() const { return &m_ServerParams; }
void setServerParam(const server_params_t* p) { m_ServerParams = *p ; }
const player_params_t* getPlayerParam() const { return &m_PlayerParams; }
void setPlayerParam(const player_params_t* p) { m_PlayerParams = *p ; }
void addOneCycle(const cycle_info_t& cInfo);
const player_type_t* getPlayerType(UINT nType);
void addPlayerType(player_type_t* p) { m_player_types.push_back(*p); }
void WriteStatus(CString str);
protected:
void init();
bool LoadLog();
bool OpenLog(CString strFileName);
bool ParseLog(CGZFile *pLogFile);
bool SaveLog(void);
void PlayLog();
void ReverseLog();
void StopPlay();
void TimerStart();
void TimerStop();
void Accelerate();
void Decelerate();
void RewindLog();
void Backward();
void Forward();
void JumpTo();
private:
const static int MAX_FREQ = 1000; // ms
const static int MIN_FREQ = 10; // ms
short GetMaxCycle();
short GetMinCycle();
short GetCurrentCycle();
double m_dFreq;
UINT m_nCurrent;
int FindCyclePos(short nCycle);
CLogParserFactory _LogParserFactory;
CDispinfoParserFactory _DispinfoParserFactory;
std::vector<cycle_info_t> m_cycle_infos;//(MAX_CYCLES);
std::vector<player_type_t> m_player_types;
server_params_t m_ServerParams;
player_params_t m_PlayerParams;
bool m_bReverse;
bool m_bTimerAlive;
CMainFrame* _pMainFrame;
CParserThread* _pParserThread;
CGZFile* _pGZFile;
CCriticalSection _Mutex;
cycle_info_t _CurrentCycle;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -