诸暨麻将添加redis
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

148 lignes
3.6 KiB

  1. #ifndef ASYNCHRONISM_ENGINE_HEAD_FILE
  2. #define ASYNCHRONISM_ENGINE_HEAD_FILE
  3. #pragma once
  4. #include "KernelEngineHead.h"
  5. //类说明
  6. class CAsynchronismEngine;
  7. typedef class CWHArray<IAsynchronismEngineSink *> CAsynchronismEngineSinkArray;
  8. //////////////////////////////////////////////////////////////////////////
  9. //控制窗口
  10. class CControlWnd : public CWnd
  11. {
  12. //变量定义
  13. public:
  14. CAsynchronismEngine * m_pAsynchronismEngine; //异步引擎
  15. //函数定义
  16. public:
  17. //构造函数
  18. CControlWnd();
  19. //析构函数
  20. virtual ~CControlWnd();
  21. //消息映射
  22. protected:
  23. //请求消息
  24. HRESULT OnAsynRequest(WPARAM wParam, LPARAM lParam);
  25. DECLARE_MESSAGE_MAP()
  26. };
  27. //////////////////////////////////////////////////////////////////////////
  28. //消息线程
  29. class CMessageThread : public CWHThread
  30. {
  31. //变量定义
  32. public:
  33. CAsynchronismEngine * m_pAsynchronismEngine; //异步引擎
  34. //函数定义
  35. public:
  36. //构造函数
  37. CMessageThread();
  38. //析构函数
  39. virtual ~CMessageThread();
  40. //功能函数
  41. public:
  42. //停止线程
  43. virtual bool StopThread(DWORD dwWaitSeconds = INFINITE);
  44. //中止线程
  45. virtual bool TerminateThread(DWORD dwExitCode);
  46. //事件函数
  47. private:
  48. //开始事件
  49. virtual bool OnThreadStratEvent();
  50. //停止事件
  51. virtual bool OnThreadStopEvent();
  52. //重载函数
  53. private:
  54. //运行函数
  55. virtual bool OnEventThreadRun();
  56. };
  57. //////////////////////////////////////////////////////////////////////////
  58. //异步引擎
  59. class CAsynchronismEngine : public IAsynchronismEngine
  60. {
  61. friend class CControlWnd;
  62. friend class CMessageThread;
  63. //内核变量
  64. protected:
  65. bool m_bService; //服务标志
  66. BYTE m_cbBuffer[MAX_ASYNCHRONISM_DATA]; //数据缓冲
  67. CAsynchronismEngineSinkArray m_AsynchronismEngineSinkArray; //异步钩子
  68. //组件变量
  69. protected:
  70. CControlWnd m_ControlWnd; //控制窗口
  71. CCriticalSection m_CriticalSection; //线程锁
  72. CWHDataQueue m_DataStorage; //数据存储
  73. CMessageThread m_MessageThread; //线程组件
  74. //函数定义
  75. public:
  76. //构造函数
  77. CAsynchronismEngine(void);
  78. //析构函数
  79. virtual ~CAsynchronismEngine(void);
  80. //基础接口
  81. public:
  82. //释放对象
  83. virtual VOID Release()
  84. {
  85. if (IsValid()) delete this; //
  86. }
  87. //是否有效
  88. virtual bool IsValid()
  89. {
  90. return AfxIsValidAddress(this, sizeof(CAsynchronismEngine)) ? true : false;
  91. }
  92. //接口查询
  93. virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer);
  94. //管理接口
  95. public:
  96. //启动服务
  97. virtual bool StartService();
  98. //停止服务
  99. virtual bool ConcludeService();
  100. //插入请求
  101. virtual bool InsertRequest(WORD wRequestID, void * const pBuffer, WORD wDataSize, IUnknownEx * pIUnknownEx);
  102. //功能接口
  103. public:
  104. virtual bool GetBurthenInfo(tagBurthenInfo & BurthenInfo);
  105. //注册钩子
  106. virtual bool SetAsynchronismSink(IUnknownEx * pIUnknownEx);
  107. //投递数据
  108. virtual bool PostAsynchronismData(WORD wIdentifier, VOID * pData, WORD wDataSize);
  109. //投递数据
  110. virtual bool PostAsynchronismData(WORD wIdentifier, tagDataBuffer DataBuffer[], WORD wDataCount);
  111. //取消注册
  112. virtual bool UnRegisterAsynchronismEngineSink(IUnknownEx * pIUnknownEx);
  113. //线程函数
  114. protected:
  115. //线程启动
  116. bool OnMessageThreadStart();
  117. //线程停止
  118. bool OnMessageThreadStop();
  119. //异步请求
  120. void OnAsynchronismRequest(WORD wRequestID, IAsynchronismEngineSink * pIAsynchronismEngineSink);
  121. };
  122. //////////////////////////////////////////////////////////////////////////
  123. #endif