|
- #ifndef TIMERENGINE_HEAD_FILE
- #define TIMERENGINE_HEAD_FILE
-
- #pragma once
-
- //系统头文件
-
- #include "KernelEngineHead.h"
- #include "QueueServiceEvent.h"
-
- #define TIMER_SPACE 25 //时间间隔
-
- //类说明
- class CTimerEngine;
-
- //////////////////////////////////////////////////////////////////////////
-
- //定时器线程
- class CTimerThread : public CWHThread
- {
- //变量定义
- protected:
- CTimerEngine * m_pTimerEngine; //定时器引擎
- //函数定义
- public:
- //构造函数
- CTimerThread(void);
- //析构函数
- virtual ~CTimerThread(void);
-
- //功能函数
- public:
- //配置函数
- bool InitThread(CTimerEngine * pTimerEngine);
-
- //重载函数
- private:
- //运行函数
- virtual bool OnEventThreadRun();
- };
-
- //////////////////////////////////////////////////////////////////////////
-
- //定时器子项
- struct tagTimerItem
- {
- DWORD wTimerID; //定时器 ID
- DWORD dwElapse; //定时时间
- DWORD dwTimeStart; //开始时间
- DWORD dwRepeatTimes; //重复次数
- WPARAM wBindParam; //绑定参数
- };
-
- //定时器子项数组定义
- typedef CWHArray<tagTimerItem *> CTimerItemPtr;
-
- //////////////////////////////////////////////////////////////////////////
-
- //定时器引擎
- class CTimerEngine : public ITimerEngine
- {
- friend class CTimerThread;
-
- //状态变量
- protected:
- bool m_bService; //运行标志
- CTimerItemPtr m_TimerItemFree; //空闲数组
- CTimerItemPtr m_TimerItemActive; //活动数组
-
- //组件变量
- protected:
- CCriticalSection m_CriticalSection; // //线程锁
- CTimerThread m_TimerThread; //定时器线程
- IQueueServiceSink *m_pIQueueServiceSink; //通知回调
-
- //函数定义
- public:
- //构造函数
- CTimerEngine(void);
- //析构函数
- virtual ~CTimerEngine(void);
-
- //基础接口
- public:
- //释放对象
- virtual VOID Release()
- {
- if (IsValid()) delete this; //
- }
- //是否有效
- virtual bool IsValid()
- {
- return AfxIsValidAddress(this, sizeof(CTimerEngine)) ? true : false;
- }
- //接口查询
- virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer);
-
- //接口函数
- public:
- //设置定时器
- virtual bool SetTimer(DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter);
- //删除定时器
- virtual bool KillTimer(DWORD dwTimerID);
- //删除定时器
- virtual bool KillAllTimer();
- //删除空闲定时器
- virtual bool KillAllFreeTimer();
- //设置接口
- virtual bool SetTimerEngineEvent(IUnknownEx * pIUnknownEx);
-
- //管理接口
- public:
- //开始服务
- virtual bool StartService();
- //停止服务
- virtual bool ConcludeService();
-
- DWORD CalSubTime(DWORD timeStart, DWORD timeEnd);
-
- //内部函数
- private:
- //定时器通知
- void OnTimerThreadSink(DWORD dwNow);
- };
-
- //////////////////////////////////////////////////////////////////////////
-
- #endif
|