ClientProcess.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. ///************************************************************************/
  2. /* Copyright (C), 2016-2020, [IT], 保留所有权利;
  3. /* 模 块 名:;
  4. /* 描 述:;
  5. /*
  6. /* 版 本:[V];
  7. /* 作 者:[IT];
  8. /* 日 期:[2/23/2016];
  9. /*
  10. /*
  11. /* 注 意:;
  12. /*
  13. /* 修改记录:[IT];
  14. /* 修改日期:;
  15. /* 修改版本:;
  16. /* 修改内容:;
  17. /************************************************************************/
  18. #ifndef __CLIENT_PROCESS_20151021__
  19. #define __CLIENT_PROCESS_20151021__
  20. #pragma once
  21. #include <list>
  22. #include "SocketHandle.h"
  23. #include "Client2SrvType.h"
  24. #include "CritSection.h"
  25. typedef struct _MSG_INFO_
  26. {
  27. TString strMessage;
  28. TString strIPAddress;
  29. SOCKET nSocket;
  30. INT wMessageLen;
  31. DWORD dwUserId;
  32. BYTE *pData; // work9使用;
  33. _MSG_INFO_& operator=(const _MSG_INFO_& another)
  34. {
  35. if ( &another == this )
  36. {
  37. return *this;
  38. }
  39. strIPAddress = another.strIPAddress;
  40. strMessage = another.strMessage;
  41. nSocket = another.nSocket;
  42. wMessageLen = another.wMessageLen;
  43. dwUserId = another.dwUserId;
  44. pData = another.pData;
  45. return *this;
  46. }
  47. _MSG_INFO_()
  48. {
  49. strIPAddress = _T("");
  50. strMessage = _T("");
  51. nSocket = -1;
  52. wMessageLen = 0;
  53. dwUserId = 0;
  54. pData = NULL;
  55. }
  56. }MsgInfo, *pMsgInfo;
  57. typedef struct __MAC_ADDRESS__
  58. {
  59. //INT nNICKind;
  60. TCHAR szNICKind[16];
  61. TCHAR szMacAddress[MAX_PATH];
  62. //TCHAR szDevicePath[MAX_PATH];
  63. }MacAddress, *pMacAddress;
  64. typedef struct __STANTI_THEFT__
  65. {
  66. CString strDetail;
  67. CString strStudioVer; // 软件版本;
  68. CString strStudioName; // 影楼名称;
  69. CString strStudioPhone; // 影楼电话;
  70. CString strStudioAddress; // 影楼地址;
  71. CString strStudioWebSite; // 影楼网站;
  72. CString strStudioManager; // 影楼店长;
  73. CString strStudioDomain; // 影楼域名;
  74. DWORD dwStudioOrderCount; // 影楼订单数;
  75. DWORD dwStudioHistoryOrderCount; // 影楼历史订单数;
  76. std::vector<MacAddress> vtMacAddress;
  77. std::vector<std::string> vtHardDiskID;
  78. }STAntiTheft, *pSTAntiTheft;
  79. typedef struct __SQLOPT__
  80. {
  81. TString strStatement;
  82. TString strExecTime;
  83. }SQLOpt, *pSQLOpt;
  84. typedef struct __DataOpt__
  85. {
  86. DWORD dwCount;
  87. TString strExecTime;
  88. }DataOpt, *pDataOpt;
  89. typedef struct __AntiTheftOpt__
  90. {
  91. BOOL bSQL_Opt;
  92. BOOL bData_Opt;
  93. std::vector<SQLOpt> vtSQLOpt;
  94. }STAntiTheftOpt, *pSTAntiTheftOpt;
  95. class CClientProcess
  96. {
  97. CClientProcess(void);
  98. public:
  99. ~CClientProcess(void);
  100. static CClientProcess* GetInstance()
  101. {
  102. static CClientProcess* pInstance = NULL;
  103. if ( pInstance == NULL )
  104. {
  105. pInstance = new CClientProcess;
  106. }
  107. return pInstance;
  108. }
  109. static DWORD net_Send(IN CSocketHandle* pSH, IN void *pHeader, IN void *pMessage, IN unsigned long ulDataLen);
  110. void ClientProcess( IN const SOCKET sClient,
  111. IN const BYTE* pbData,
  112. IN DWORD dwCount,
  113. IN LPCTSTR lpaddr,
  114. IN BYTE** PendingBuf,
  115. IN UINT &nPendingSize,
  116. IN UINT &nCurSize);
  117. DWORD m_dwOverBuffer;
  118. DWORD m_dwOverIndex;
  119. BYTE *m_pOverBuffer;
  120. public:
  121. // case 6;
  122. static BOOL Work_No6(IN TString& strContent, IN LPCTSTR lpIPAddress);
  123. static BOOL Work_No7(OUT TString& strBranchId);
  124. static BOOL Work_No8(IN TString& strContent, OUT INT& ArySize, OUT BYTE** pAryData, OUT DWORD& dwAryDataSize);
  125. static BOOL Work_No9(OUT TString& strContent, IN BYTE* pData, IN CONST INT &nMessageLen);
  126. static BOOL Work_No10(IN LPCTSTR lpIPAddress, IN TString& strContent);
  127. static BOOL Work_No11(IN TString& strContent);
  128. static BOOL Work_No12(IN TString& strContent);
  129. static BOOL Work_No13(IN TString& strContent);
  130. static BOOL Work_No14(IN TString& strContent);
  131. static BOOL Work_No15(IN TString& strContent);
  132. static BOOL Work_No16(IN LPCTSTR lpIPAddress, IN TString& strContent);
  133. static BOOL Work_No17(IN LPCTSTR lpIPAddress, IN BYTE* pData, IN const DWORD& dwLen, OUT BYTE** pSendData, OUT DWORD& dwSendSize);
  134. static INT Work_No18(IN LPCTSTR lpIPAddress, IN TString& strContent); // -1:表示失败; 0:表示新增; 其他>0表示自增列id;
  135. static DWORD WorkSendInfo(
  136. IN CONST SOCKET& nSock,
  137. IN TString &strIPAddr,
  138. IN const DWORD& dwUserId,
  139. IN CONST INT& wMessageLen,
  140. IN TString &strInfo,
  141. OUT INT& ArySize,
  142. OUT BYTE** pAryData,
  143. OUT DWORD& dwAryDataSize
  144. );
  145. public:
  146. static list<MsgInfo> m_listMsgInfo;
  147. // 保护连接池的临界区;
  148. static CRITICAL_SECTION m_csMsgInfo;
  149. // 从尾部插入一条信息;
  150. static void InsertMsgInfo(IN MsgInfo& msgInfo);
  151. // 从头部取出一条信息;
  152. static BOOL PopMsgInfo(IN MsgInfo& msgInfo);
  153. HANDLE m_hThread;
  154. HANDLE m_hEvent;
  155. static DWORD WINAPI MsgThread(LPVOID lpParam);
  156. HANDLE m_hThread2;
  157. HANDLE m_hEvent2;
  158. void StartMsgWork();
  159. void EndOfMsgWork();
  160. };
  161. #endif