#ifndef ATTEMPER_ENGINE_SINK_HEAD_FILE #define ATTEMPER_ENGINE_SINK_HEAD_FILE #pragma once #include "Stdafx.h" #include "InitParameter.h" #include "GlobalInfoManager.h" ////////////////////////////////////////////////////////////////////////////////// //数据定义 //服务类型 enum enServiceKind { ServiceKind_None, //无效服务 ServiceKind_Game, //游戏服务 ServiceKind_Plaza, //广场服务 }; //绑定参数 struct tagBindParameter { //网络数据 DWORD dwSocketID; //网络标识 DWORD dwClientAddr; //连接地址 DWORD dwActiveTime; //激活时间 //附加数据 WORD wServiceID; //服务标识 enServiceKind ServiceKind; //服务类型 }; //数组定义 typedef CWHArray CWordArrayTemplate; ////////////////////////////////////////////////////////////////////////////////// //调度钩子 class CAttemperEngineSink : public IAttemperEngineSink { //友元定义 friend class CServiceUnits; friend class CGlobalInfoManager; //状态变量 protected: WORD m_wCollectItem; //汇总连接 CWordArrayTemplate m_WaitCollectItemArray; //汇总等待 //变量定义 protected: CInitParameter * m_pInitParameter; //配置参数 tagBindParameter * m_pBindParameter; //辅助数组 //组件变量 public: CGlobalInfoManager m_GlobalInfoManager; //全局管理 CMap m_ServiceIDMap; //游戏服务器菜单记录 CMap m_LoginServiceIDMap; //游戏登录服务器菜单记录 //组件接口 protected: ITimerEngine * m_pITimerEngine; //时间引擎 ITCPNetworkEngine * m_pITCPNetworkEngine; //网络引擎 //函数定义 public: //构造函数 CAttemperEngineSink(); //析构函数 virtual ~CAttemperEngineSink(); //基础接口 public: //释放对象 virtual VOID Release() { return; } //接口查询 virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer); //异步接口 public: //启动事件 virtual bool OnAttemperEngineStart(IUnknownEx * pIUnknownEx); //停止事件 virtual bool OnAttemperEngineConclude(IUnknownEx * pIUnknownEx); //事件接口 public: //控制事件 virtual bool OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize); //自定事件 virtual bool OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize); //同步事件 virtual bool OnTongBu(int Command, DWORD dwContextID, VOID * pData, WORD wDataSize); //内核事件 public: //时间事件 virtual bool OnEventTimer(DWORD dwTimerID, WPARAM wBindParam); //数据库事件 virtual bool OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize); //连接事件 public: //连接事件 virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode); //关闭事件 virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason); //读取事件 virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize); //网络事件 public: //应答事件 virtual bool OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID); //关闭事件 virtual bool OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID); //读取事件 virtual bool OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID); //网络事件 protected: //注册服务 bool OnTCPNetworkMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //服务状态 bool OnTCPNetworkMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户汇总 bool OnTCPNetworkMainUserCollect(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //远程服务 bool OnTCPNetworkMainRemoteService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //管理服务 bool OnTCPNetworkMainManagerService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //机器服务 //bool OnTCPNetworkMainAndroidService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //辅助函数 protected: //发送列表 bool SendServerListItem(DWORD dwSocketID); //发送列表 bool SendMatchListItem(DWORD dwSocketID); //发送私人房间列表总会 bool SendPrivateListItem(DWORD dwSocketID); //数据发送 protected: //房间发送 bool SendDataToGame(WORD wServerID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //登录失败 bool SendLogonFailure(LPCTSTR pszString, LONG lErrorCode, DWORD dwSocketID); }; ////////////////////////////////////////////////////////////////////////////////// #endif