#ifndef ASYNCHRONISM_ENGINE_HEAD_FILE #define ASYNCHRONISM_ENGINE_HEAD_FILE #pragma once #include "KernelEngineHead.h" //类说明 class CAsynchronismEngine; typedef class CWHArray CAsynchronismEngineSinkArray; ////////////////////////////////////////////////////////////////////////// //控制窗口 class CControlWnd : public CWnd { //变量定义 public: CAsynchronismEngine * m_pAsynchronismEngine; //异步引擎 //函数定义 public: //构造函数 CControlWnd(); //析构函数 virtual ~CControlWnd(); //消息映射 protected: //请求消息 HRESULT OnAsynRequest(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP() }; ////////////////////////////////////////////////////////////////////////// //消息线程 class CMessageThread : public CWHThread { //变量定义 public: CAsynchronismEngine * m_pAsynchronismEngine; //异步引擎 //函数定义 public: //构造函数 CMessageThread(); //析构函数 virtual ~CMessageThread(); //功能函数 public: //停止线程 virtual bool StopThread(DWORD dwWaitSeconds = INFINITE); //中止线程 virtual bool TerminateThread(DWORD dwExitCode); //事件函数 private: //开始事件 virtual bool OnThreadStratEvent(); //停止事件 virtual bool OnThreadStopEvent(); //重载函数 private: //运行函数 virtual bool OnEventThreadRun(); }; ////////////////////////////////////////////////////////////////////////// //异步引擎 class CAsynchronismEngine : public IAsynchronismEngine { friend class CControlWnd; friend class CMessageThread; //内核变量 protected: bool m_bService; //服务标志 BYTE m_cbBuffer[MAX_ASYNCHRONISM_DATA]; //数据缓冲 CAsynchronismEngineSinkArray m_AsynchronismEngineSinkArray; //异步钩子 //组件变量 protected: CControlWnd m_ControlWnd; //控制窗口 CCriticalSection m_CriticalSection; //线程锁 CWHDataQueue m_DataStorage; //数据存储 CMessageThread m_MessageThread; //线程组件 //函数定义 public: //构造函数 CAsynchronismEngine(void); //析构函数 virtual ~CAsynchronismEngine(void); //基础接口 public: //释放对象 virtual VOID Release() { if (IsValid()) delete this; // } //是否有效 virtual bool IsValid() { return AfxIsValidAddress(this, sizeof(CAsynchronismEngine)) ? true : false; } //接口查询 virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer); //管理接口 public: //启动服务 virtual bool StartService(); //停止服务 virtual bool ConcludeService(); //插入请求 virtual bool InsertRequest(WORD wRequestID, void * const pBuffer, WORD wDataSize, IUnknownEx * pIUnknownEx); //功能接口 public: virtual bool GetBurthenInfo(tagBurthenInfo & BurthenInfo); //注册钩子 virtual bool SetAsynchronismSink(IUnknownEx * pIUnknownEx); //投递数据 virtual bool PostAsynchronismData(WORD wIdentifier, VOID * pData, WORD wDataSize); //投递数据 virtual bool PostAsynchronismData(WORD wIdentifier, tagDataBuffer DataBuffer[], WORD wDataCount); //取消注册 virtual bool UnRegisterAsynchronismEngineSink(IUnknownEx * pIUnknownEx); //线程函数 protected: //线程启动 bool OnMessageThreadStart(); //线程停止 bool OnMessageThreadStop(); //异步请求 void OnAsynchronismRequest(WORD wRequestID, IAsynchronismEngineSink * pIAsynchronismEngineSink); }; ////////////////////////////////////////////////////////////////////////// #endif