#ifndef _ZJD_ZJD3100_PROCESS_H_ #define _ZJD_ZJD3100_PROCESS_H_ #include "netproc.h" #include #define DBG_VIEW_TOOL 1 typedef std::unordered_map proto2namemap; class CZJD3100ProcessItem : public CNetProcessItem { public: BOOLEAN logined; int m_command; DWORD apdu_t0_begin; public: CZJD3100ProcessItem(); virtual ~CZJD3100ProcessItem(); virtual void Attach(int uid, int sock, DWORD peer_addr, WORD peer_port); virtual void Release(void); }; class CZJD3100Process : public CNetProcess { public: CZJD3100Process(); virtual ~CZJD3100Process(); BOOLEAN OnPreCreate(int id); void Destroy(void); BOOLEAN Run(void); BOOLEAN OnTimer(void); int OnPackageReceived(BYTE* pBuf, int count, int ord = -1); private: proto2namemap m_proto2name_map; private: BOOLEAN OnSyntax(char *pData, int ord); BOOLEAN OnSyntaxLogin(char *pData, int ord); BOOLEAN OnSyntaxDB(char *pData, int ord); BOOLEAN OnSyntaxDBYX(char *pData, int ord); BOOLEAN OnSyntaxDBYC(char *pData, int ord); BOOLEAN OnSyntaxDBYM(char *pData, int ord); BOOLEAN OnSyntaxDBYK(char *pData, int ord); BOOLEAN OnSyntaxUnit(char *pData, int ord); BOOLEAN OnSyntaxUnitYX(char *pData, int uid, int ord); BOOLEAN OnSyntaxUnitYC(char *pData, int uid, int ord); BOOLEAN OnSyntaxUnitYM(char *pData, int uid, int ord); BOOLEAN OnSyntaxUnitExt(char *pData, int ord); BOOLEAN OnSyntaxUnitExtYX(char *pData, int uid, int ord); BOOLEAN OnSyntaxUnitExtYC(char *pData, int uid, int ord); BOOLEAN OnSyntaxUnitExtYM(char *pData, int uid, int ord); BOOLEAN OnSyntaxChannel(char *pData, int ord); BOOLEAN OnSyntaxChannelData(int ord); BOOLEAN OnSyntaxUnitDisplay(char *pData, int ord); BOOLEAN OnSyntaxUnitDisplayData(int ord); BOOLEAN OnSyntaxMsg(char *pData, int ord); BOOLEAN OnSyntaxMsgData(int ord); BOOLEAN OnSyntanProcessInfo(char *, int); #if DBG_VIEW_TOOL FILE* m_pFile; struct stat m_fileStat; BOOLEAN OnSyntaxExt(char*, int); BOOLEAN OnSyntaxExtSys(char*, int); BOOLEAN OnSyntaxExtSysHostName(char*, int); BOOLEAN OnSyntaxExtSysReboot(char*, int); BOOLEAN OnSyntaxExtSysAppReboot(char*, int); BOOLEAN OnSyntaxExtInfo(char*, int); BOOLEAN OnSyntaxExtInfoChannel(char*, int); BOOLEAN OnSyntaxExtInfoMsg(char*, int); BOOLEAN OnSyntaxExtInfoStatus(char*, int); //BOOLEAN OnSyntaxExtInfoUnitsStatus(char*, int); //BOOLEAN OnSyntaxExtInfoProcessesStatus(char*, int); BOOLEAN OnSyntaxExtCfg(char*, int); BOOLEAN OnSyntaxExtCfgPath(char*, int); BOOLEAN OnSyntaxExtCfgPort(char*, int); BOOLEAN OnSyntaxExtCfgProcess(char *pData, int ord); BOOLEAN OnSyntaxExtCfgUnit(char *pData, int ord); BOOLEAN OnSyntaxExtCfgStatic(char *pData, int ord); BOOLEAN OnSyntaxExtFile(char *pData, int ord); BOOLEAN OnSyntaxExtFileGetInfo(char* pBuf, int ord); BOOLEAN OnSyntaxExtFileOpen(char* pBuf, int ord); BOOLEAN OnSyntaxExtFileClose(char* pBuf, int ord); BOOLEAN OnSyntaxExtFileRead(char* pBuf, int ord); BOOLEAN OnSyntaxExtFileWrite(char* pBuf, int ord); BOOLEAN OnSyntaxExtUnit(char *pData, int ord); BOOLEAN OnSyntaxExtUnitYX(char *pData, int uid, int ord); BOOLEAN OnSyntaxExtUnitYC(char *pData, int uid, int ord); BOOLEAN OnSyntaxExtUnitYM(char *pData, int uid, int ord); #endif DWORD OnReadChannelRingBuff(char *rbuff, DWORD len) { DWORD l; if (channelBuffer.buf == NULL) return -1; len = wMin(len, (channelBuffer.save - channelBuffer.load)); /* 第一部分的拷贝:从环形缓冲区读取数据直至缓冲区最后一个 */ l = wMin(len, MAX_DISPLAY_BUFFER_SIZE - (channelBuffer.load & (MAX_DISPLAY_BUFFER_SIZE - 1))); memcpy(rbuff, channelBuffer.buf + (channelBuffer.load & (MAX_DISPLAY_BUFFER_SIZE - 1)), l); /* 如果溢出则在缓冲区头读取剩余的部分如果没溢出这句代码相当于无效 */ memcpy(rbuff + l, channelBuffer.buf, len - l); channelBuffer.load += len; return len; }; BOOLEAN OnSyntaxUnitsStatus(char *pData, int ord); //获取单元状态 virtual CNetProcessItem *CreateItem(int ord); virtual void DestroyItem(int ord, BOOLEAN bDeleted = FALSE); }; #endif //_ZJD_ZJD3100_PROCESS_H_