诸暨麻将添加redis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

129 rivejä
2.9 KiB

  1. #ifndef TIMERENGINE_HEAD_FILE
  2. #define TIMERENGINE_HEAD_FILE
  3. #pragma once
  4. //系统头文件
  5. #include "KernelEngineHead.h"
  6. #include "QueueServiceEvent.h"
  7. #define TIMER_SPACE 25 //时间间隔
  8. //类说明
  9. class CTimerEngine;
  10. //////////////////////////////////////////////////////////////////////////
  11. //定时器线程
  12. class CTimerThread : public CWHThread
  13. {
  14. //变量定义
  15. protected:
  16. CTimerEngine * m_pTimerEngine; //定时器引擎
  17. //函数定义
  18. public:
  19. //构造函数
  20. CTimerThread(void);
  21. //析构函数
  22. virtual ~CTimerThread(void);
  23. //功能函数
  24. public:
  25. //配置函数
  26. bool InitThread(CTimerEngine * pTimerEngine);
  27. //重载函数
  28. private:
  29. //运行函数
  30. virtual bool OnEventThreadRun();
  31. };
  32. //////////////////////////////////////////////////////////////////////////
  33. //定时器子项
  34. struct tagTimerItem
  35. {
  36. DWORD wTimerID; //定时器 ID
  37. DWORD dwElapse; //定时时间
  38. DWORD dwTimeStart; //开始时间
  39. DWORD dwRepeatTimes; //重复次数
  40. WPARAM wBindParam; //绑定参数
  41. };
  42. //定时器子项数组定义
  43. typedef CWHArray<tagTimerItem *> CTimerItemPtr;
  44. //////////////////////////////////////////////////////////////////////////
  45. //定时器引擎
  46. class CTimerEngine : public ITimerEngine
  47. {
  48. friend class CTimerThread;
  49. //状态变量
  50. protected:
  51. bool m_bService; //运行标志
  52. CTimerItemPtr m_TimerItemFree; //空闲数组
  53. CTimerItemPtr m_TimerItemActive; //活动数组
  54. //组件变量
  55. protected:
  56. CCriticalSection m_CriticalSection; // //线程锁
  57. CTimerThread m_TimerThread; //定时器线程
  58. IQueueServiceSink *m_pIQueueServiceSink; //通知回调
  59. //函数定义
  60. public:
  61. //构造函数
  62. CTimerEngine(void);
  63. //析构函数
  64. virtual ~CTimerEngine(void);
  65. //基础接口
  66. public:
  67. //释放对象
  68. virtual VOID Release()
  69. {
  70. if (IsValid()) delete this; //
  71. }
  72. //是否有效
  73. virtual bool IsValid()
  74. {
  75. return AfxIsValidAddress(this, sizeof(CTimerEngine)) ? true : false;
  76. }
  77. //接口查询
  78. virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer);
  79. //接口函数
  80. public:
  81. //设置定时器
  82. virtual bool SetTimer(DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter);
  83. //删除定时器
  84. virtual bool KillTimer(DWORD dwTimerID);
  85. //删除定时器
  86. virtual bool KillAllTimer();
  87. //删除空闲定时器
  88. virtual bool KillAllFreeTimer();
  89. //设置接口
  90. virtual bool SetTimerEngineEvent(IUnknownEx * pIUnknownEx);
  91. //管理接口
  92. public:
  93. //开始服务
  94. virtual bool StartService();
  95. //停止服务
  96. virtual bool ConcludeService();
  97. DWORD CalSubTime(DWORD timeStart, DWORD timeEnd);
  98. //内部函数
  99. private:
  100. //定时器通知
  101. void OnTimerThreadSink(DWORD dwNow);
  102. };
  103. //////////////////////////////////////////////////////////////////////////
  104. #endif