ClientProcess.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. typedef struct _MSG_INFO_
  25. {
  26. TString strMessage;
  27. TString strIPAddress;
  28. SOCKET nSocket;
  29. INT wMessageLen;
  30. DWORD dwUserId;
  31. BYTE *pData; // work9使用;
  32. _MSG_INFO_& operator=(const _MSG_INFO_& another)
  33. {
  34. if ( &another == this )
  35. {
  36. return *this;
  37. }
  38. strIPAddress = another.strIPAddress;
  39. strMessage = another.strMessage;
  40. nSocket = another.nSocket;
  41. wMessageLen = another.wMessageLen;
  42. dwUserId = another.dwUserId;
  43. pData = another.pData;
  44. return *this;
  45. }
  46. _MSG_INFO_()
  47. {
  48. strIPAddress = _T("");
  49. strMessage = _T("");
  50. nSocket = -1;
  51. wMessageLen = 0;
  52. dwUserId = 0;
  53. pData = NULL;
  54. }
  55. }MsgInfo, *pMsgInfo;
  56. class CClientProcess
  57. {
  58. CClientProcess(void);
  59. public:
  60. ~CClientProcess(void);
  61. static CClientProcess* GetInstance()
  62. {
  63. static CClientProcess* pInstance = NULL;
  64. if ( pInstance == NULL )
  65. {
  66. pInstance = new CClientProcess;
  67. }
  68. return pInstance;
  69. }
  70. static DWORD net_Send(IN CSocketHandle* pSH, IN void *pHeader, IN void *pMessage, IN unsigned long ulDataLen);
  71. void ClientProcess( IN const SOCKET sClient,
  72. IN const BYTE* pbData,
  73. IN DWORD dwCount,
  74. IN LPCTSTR lpaddr,
  75. IN BYTE** PendingBuf,
  76. IN UINT &nPendingSize,
  77. IN UINT &nCurSize);
  78. public:
  79. // case 6;
  80. static BOOL Work_No0(IN TString& strContent);
  81. static BOOL Work_No1();
  82. static BOOL Work_No2();
  83. static BOOL Work_No3();
  84. static BOOL Work_No4();
  85. static BOOL Work_No5();
  86. static BOOL Work_No6(IN TString& strContent, IN LPCTSTR lpIPAddress);
  87. static BOOL Work_No7(OUT TString& strBranchId);
  88. static BOOL Work_No8(IN TString& strContent, OUT INT& ArySize, OUT BYTE** pAryData, OUT DWORD& dwAryDataSize);
  89. static BOOL Work_No9(OUT TString& strContent, IN BYTE* pData, IN CONST INT &nMessageLen);
  90. static BOOL Work_No10(IN LPCTSTR lpIPAddress, IN TString& strContent);
  91. static BOOL Work_No11(IN TString& strContent);
  92. static BOOL Work_No12(IN TString& strContent);
  93. static BOOL Work_No13(IN TString& strContent);
  94. static BOOL Work_No14(IN TString& strContent);
  95. static BOOL Work_No15(IN TString& strContent);
  96. static BOOL Work_No16(IN LPCTSTR lpIPAddress, IN TString& strContent);
  97. static void WorkSendInfo(IN CONST SOCKET& nSock, IN CONST INT& wMessageLen, IN TString &strInfo, OUT INT& ArySize, OUT BYTE** pAryData, OUT DWORD& dwAryDataSize);
  98. public:
  99. static list<MsgInfo> m_listMsgInfo;
  100. // 保护连接池的临界区;
  101. static CRITICAL_SECTION m_csMsgInfo;
  102. // 从尾部插入一条信息;
  103. static void InsertMsgInfo(IN MsgInfo& msgInfo);
  104. // 从头部取出一条信息;
  105. static BOOL PopMsgInfo(IN MsgInfo& msgInfo);
  106. HANDLE m_hThread;
  107. HANDLE m_hEvent;
  108. static DWORD WINAPI MsgThread(LPVOID lpParam);
  109. HANDLE m_hThread2;
  110. HANDLE m_hEvent2;
  111. void StartMsgWork();
  112. void EndOfMsgWork();
  113. };
  114. #endif