诸暨麻将添加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.
 
 
 
 
 
 

868 lines
30 KiB

  1. #ifndef KERNEL_ENGINE_HEAD_HEAD_FILE
  2. #define KERNEL_ENGINE_HEAD_HEAD_FILE
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //包含文件
  5. #include <Afxmt.h>
  6. #include <Comutil.h>
  7. #include <ICrsint.h>
  8. #include <Process.h>
  9. #include <Wininet.h>
  10. #include <WinSock2.h>
  11. //平台文件
  12. #include "..\..\GlobalDef\Platform.h"
  13. #include "..\..\SharedControl\ServiceCore\ServiceCoreHead.h"
  14. //////////////////////////////////////////////////////////////////////////////////
  15. //ADO 定义
  16. #import "MSADO15.DLL" rename_namespace("ADOCG") rename("EOF","EndOfFile")
  17. using namespace ADOCG;
  18. typedef _com_error CComError; //COM 错误
  19. typedef _variant_t CDBVarValue; //数据库数值
  20. //////////////////////////////////////////////////////////////////////////////////
  21. //导出定义
  22. //导出定义
  23. #ifndef KERNEL_ENGINE_CLASS
  24. #ifdef KERNEL_ENGINE_DLL
  25. #define KERNEL_ENGINE_CLASS _declspec(dllexport)
  26. #else
  27. #define KERNEL_ENGINE_CLASS _declspec(dllimport)
  28. #endif
  29. #endif
  30. //模块定义
  31. #ifndef _DEBUG
  32. #define KERNEL_ENGINE_DLL_NAME TEXT("KernelEngine.dll") //组件 DLL 名字
  33. #else
  34. #define KERNEL_ENGINE_DLL_NAME TEXT("KernelEngineD.dll") //组件 DLL 名字
  35. #endif
  36. //////////////////////////////////////////////////////////////////////////////////
  37. //系统常量
  38. //常量定义
  39. #define TIME_CELL 200 //时间单元
  40. #define TIMES_INFINITY DWORD(-1) //无限次数
  41. #define MAX_ASYNCHRONISM_DATA 60000 //异步数据
  42. #define MAX_TONGDAO 360 //通道最大数
  43. ///---add by yd
  44. #define TIMES_LOGONSERVER_HEARTBEAT 5000 //登录服务器心跳间隔
  45. //////////////////////////////////////////////////////////////////////////////////
  46. //网络定义
  47. //连接错误
  48. #define CONNECT_SUCCESS 0 //连接成功
  49. #define CONNECT_FAILURE 1 //连接失败
  50. #define CONNECT_EXCEPTION 2 //参数异常
  51. //网络状态
  52. #define SOCKET_STATUS_IDLE 0 //空闲状态
  53. #define SOCKET_STATUS_WAIT 1 //等待状态
  54. #define SOCKET_STATUS_CONNECT 2 //连接状态
  55. //关闭原因
  56. #define SHUT_REASON_INSIDE 0 //内部原因
  57. #define SHUT_REASON_NORMAL 1 //正常关闭
  58. #define SHUT_REASON_REMOTE 2 //远程关闭
  59. #define SHUT_REASON_TIME_OUT 3 //网络超时
  60. #define SHUT_REASON_EXCEPTION 4 //异常关闭
  61. //////////////////////////////////////////////////////////////////////////////////
  62. //枚举定义
  63. //输出等级
  64. enum enTraceLevel
  65. {
  66. TraceLevel_Info = 0, //信息消息
  67. TraceLevel_Normal = 1, //普通消息
  68. TraceLevel_Warning = 2, //警告消息
  69. TraceLevel_Exception = 3, //异常消息
  70. TraceLevel_Debug = 4, //调试消息
  71. };
  72. //SQL 异常类型
  73. enum enSQLException
  74. {
  75. SQLException_None = 0, //没有异常
  76. SQLException_Connect = 1, //连接错误
  77. SQLException_Syntax = 2, //语法错误
  78. };
  79. //////////////////////////////////////////////////////////////////////////////////
  80. //事件定义
  81. //事件标识
  82. #define EVENT_TIMER 0x0001 //时间事件
  83. #define EVENT_CONTROL 0x0002 //控制事件
  84. #define EVENT_DATABASE 0x0003 //数据库事件
  85. //网络事件
  86. #define EVENT_TCP_SOCKET_READ 0x0004 //读取事件
  87. #define EVENT_TCP_SOCKET_SHUT 0x0005 //关闭事件
  88. #define EVENT_TCP_SOCKET_LINK 0x0006 //连接事件
  89. //网络事件
  90. #define EVENT_TCP_NETWORK_ACCEPT 0x0007 //应答事件
  91. #define EVENT_TCP_NETWORK_READ 0x0008 //读取事件
  92. #define EVENT_TCP_NETWORK_SHUT 0x0009 //关闭事件
  93. #define EVENT_TCP_NETWORK_FOREGROUND 0x000a //关闭事件 --websocket新增宏变量
  94. //事件掩码
  95. #define EVENT_MASK_KERNEL 0x00FF //内核事件
  96. #define EVENT_MASK_CUSTOM 0xFF00 //自定义事件
  97. //同步事件
  98. #define EVENT_TCP_TONGBU 0x0010 //同步事件
  99. //////////////////////////////////////////////////////////////////////////////////
  100. //控制事件
  101. struct NTY_ControlEvent
  102. {
  103. WORD wControlID; //控制标识
  104. };
  105. //定时器事件
  106. struct NTY_TimerEvent
  107. {
  108. DWORD dwTimerID; //时间标识
  109. WPARAM dwBindParameter; //绑定参数
  110. };
  111. //数据库事件
  112. struct NTY_DataBaseEvent
  113. {
  114. WORD wRequestID; //请求标识
  115. DWORD dwContextID; //对象标识
  116. };
  117. //读取事件
  118. struct NTY_TCPSocketReadEvent
  119. {
  120. WORD wDataSize; //数据大小
  121. WORD wServiceID; //服务标识
  122. TCP_Command Command; //命令信息
  123. };
  124. //关闭事件
  125. struct NTY_TCPSocketShutEvent
  126. {
  127. WORD wServiceID; //服务标识
  128. BYTE cbShutReason; //关闭原因
  129. };
  130. //连接事件
  131. struct NTY_TCPSocketLinkEvent
  132. {
  133. INT nErrorCode; //错误代码
  134. WORD wServiceID; //服务标识
  135. };
  136. //应答事件
  137. struct NTY_TCPNetworkAcceptEvent
  138. {
  139. DWORD dwSocketID; //网络标识
  140. DWORD dwClientAddr; //连接地址
  141. };
  142. //读取事件
  143. struct NTY_TCPNetworkReadEvent
  144. {
  145. WORD wDataSize; //数据大小
  146. DWORD dwSocketID; //网络标识
  147. TCP_Command Command; //命令信息
  148. };
  149. //关闭事件
  150. struct NTY_TCPNetworkShutEvent
  151. {
  152. DWORD dwSocketID; //网络标识
  153. DWORD dwClientAddr; //连接地址
  154. DWORD dwActiveTime; //连接时间
  155. };
  156. struct NTY_TCPNetworkForegroundEvent //websocket新增
  157. {
  158. DWORD dwSocketID; //网络标识
  159. bool bForeground;
  160. };
  161. //////////////////////////////////////////////////////////////////////////////////
  162. #ifdef _UNICODE
  163. #define VER_IDataBaseException INTERFACE_VERSION(1,1)
  164. static const GUID IID_IDataBaseException = { 0x008be9d3, 0x2305, 0x40da, 0x00ae, 0xd1, 0x61, 0x7a, 0xd2, 0x2a, 0x47, 0xfc };
  165. #else
  166. #define VER_IDataBaseException INTERFACE_VERSION(1,1)
  167. static const GUID IID_IDataBaseException = { 0x428361ed, 0x9dfa, 0x43d7, 0x008f, 0x26, 0x17, 0x06, 0x47, 0x6b, 0x2a, 0x51 };
  168. #endif
  169. //数据库异常
  170. interface IDataBaseException : public IUnknownEx
  171. {
  172. //异常代码
  173. virtual HRESULT GetExceptionResult() = NULL;
  174. //异常描述
  175. virtual LPCTSTR GetExceptionDescribe() = NULL;
  176. //异常类型
  177. virtual enSQLException GetExceptionType() = NULL;
  178. };
  179. //////////////////////////////////////////////////////////////////////////////////
  180. #ifdef _UNICODE
  181. #define VER_ITraceService INTERFACE_VERSION(1,1)
  182. static const GUID IID_ITraceService = { 0xe4096162, 0x8134, 0x4d2c, 0x00b6, 0x4f, 0x09, 0x5d, 0xcc, 0xca, 0xe0, 0x81 };
  183. #else
  184. #define VER_ITraceService INTERFACE_VERSION(1,1)
  185. static const GUID IID_ITraceService = { 0xe5f636c6, 0xabb5, 0x4752, 0x00bb, 0xc8, 0xcd, 0xb1, 0x76, 0x58, 0xf5, 0x2d };
  186. #endif
  187. //事件输出
  188. interface ITraceService : public IUnknownEx
  189. {
  190. //字串输出
  191. virtual bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel) = NULL;
  192. };
  193. //////////////////////////////////////////////////////////////////////////////////
  194. #ifdef _UNICODE
  195. #define VER_ITraceServiceManager INTERFACE_VERSION(1,1)
  196. static const GUID IID_ITraceServiceManager = { 0x6d14efe6, 0x892a, 0x4a48, 0x0092, 0xc9, 0xdb, 0xea, 0x92, 0xdd, 0xd5, 0x13 };
  197. #else
  198. #define VER_ITraceServiceManager INTERFACE_VERSION(1,1)
  199. static const GUID IID_ITraceServiceManager = { 0x8bfc36db, 0x5ba2, 0x42ba, 0x0081, 0xb0, 0x87, 0xb0, 0x1c, 0x9e, 0xaf, 0xfe };
  200. #endif
  201. //输出管理
  202. interface ITraceServiceManager : public IUnknownEx
  203. {
  204. //状态管理
  205. public:
  206. //追踪状态
  207. virtual bool IsEnableTrace(enTraceLevel TraceLevel) = NULL;
  208. //追踪控制
  209. virtual bool EnableTrace(enTraceLevel TraceLevel, bool bEnableTrace) = NULL;
  210. //服务配置
  211. public:
  212. //设置接口
  213. virtual bool SetTraceService(IUnknownEx * pIUnknownEx) = NULL;
  214. //获取接口
  215. virtual VOID * GetTraceService(REFGUID Guid, DWORD dwQueryVer) = NULL;
  216. //服务接口
  217. public:
  218. //字串输出
  219. virtual bool TraceString(LPCTSTR pszString, enTraceLevel TraceLevel) = NULL;
  220. };
  221. //////////////////////////////////////////////////////////////////////////////////
  222. #ifdef _UNICODE
  223. #define VER_IServiceModule INTERFACE_VERSION(1,1)
  224. static const GUID IID_IServiceModule = { 0x49084dea, 0x4420, 0x4bea, 0x0080, 0x64, 0xfa, 0x37, 0xe3, 0x42, 0xf3, 0x1c };
  225. #else
  226. #define VER_IServiceModule INTERFACE_VERSION(1,1)
  227. static const GUID IID_IServiceModule = { 0x05980504, 0xa2f2, 0x4b0f, 0x009b, 0x54, 0x51, 0x54, 0x1e, 0x05, 0x5c, 0xff };
  228. #endif
  229. //服务模块
  230. interface IServiceModule : public IUnknownEx
  231. {
  232. //启动服务
  233. virtual bool StartService() = NULL;
  234. //停止服务
  235. virtual bool ConcludeService() = NULL;
  236. };
  237. //////////////////////////////////////////////////////////////////////////////////
  238. #ifdef _UNICODE
  239. #define VER_IAsynchronismEngine INTERFACE_VERSION(1,1)
  240. static const GUID IID_IAsynchronismEngine = { 0xe03ad33d, 0xb285, 0x48ea, 0x86, 0x70, 0x0a, 0x95, 0x55, 0x92, 0x07, 0xe1 };
  241. #else
  242. #define VER_IAsynchronismEngine INTERFACE_VERSION(1,1)
  243. static const GUID IID_IAsynchronismEngine = { 0xc7a13074, 0x75c5, 0x4b8e, 0xb5, 0x4b, 0xee, 0x0e, 0xec, 0xfe, 0xb9, 0xeb };
  244. #endif
  245. //异步引擎
  246. interface IAsynchronismEngine : public IServiceModule
  247. {
  248. //配置接口
  249. public:
  250. //队列负荷
  251. virtual bool GetBurthenInfo(tagBurthenInfo & BurthenInfo) = NULL;
  252. //设置模块
  253. virtual bool SetAsynchronismSink(IUnknownEx * pIUnknownEx) = NULL;
  254. //投递接口
  255. public:
  256. //投递数据
  257. virtual bool PostAsynchronismData(WORD wIdentifier, VOID * pData, WORD wDataSize) = NULL;
  258. //投递数据
  259. virtual bool PostAsynchronismData(WORD wIdentifier, tagDataBuffer DataBuffer[], WORD wDataCount) = NULL;
  260. };
  261. //////////////////////////////////////////////////////////////////////////////////
  262. #ifdef _UNICODE
  263. #define VER_IAsynchronismEngineSink INTERFACE_VERSION(1,1)
  264. static const GUID IID_IAsynchronismEngineSink = { 0x55215681, 0x858a, 0x46f6, 0x0084, 0xec, 0x84, 0x9e, 0xc8, 0x7d, 0x82, 0x35 };
  265. #else
  266. #define VER_IAsynchronismEngineSink INTERFACE_VERSION(1,1)
  267. static const GUID IID_IAsynchronismEngineSink = { 0x2edf5c9e, 0x2cac, 0x461d, 0x00a7, 0x82, 0x2e, 0x2f, 0xe1, 0x91, 0x80, 0xf8 };
  268. #endif
  269. //异步钩子
  270. interface IAsynchronismEngineSink : public IUnknownEx
  271. {
  272. //启动事件
  273. virtual bool OnAsynchronismEngineStart() = NULL;
  274. //停止事件
  275. virtual bool OnAsynchronismEngineConclude() = NULL;
  276. //异步数据
  277. virtual bool OnAsynchronismEngineData(WORD wIdentifier, VOID * pData, WORD wDataSize) = NULL;
  278. };
  279. //////////////////////////////////////////////////////////////////////////////////
  280. #ifdef _UNICODE
  281. #define VER_IDataBase INTERFACE_VERSION(1,1)
  282. static const GUID IID_IDataBase = { 0x7fbbbffa, 0xedf4, 0x43d2, 0x008a, 0xb7, 0x28, 0x87, 0x3b, 0xd0, 0xf5, 0x3f };
  283. #else
  284. #define VER_IDataBase INTERFACE_VERSION(1,1)
  285. static const GUID IID_IDataBase = { 0xa2e38a78, 0x1e4f, 0x4de4, 0x00a5, 0xd1, 0xb9, 0x19, 0x9b, 0xce, 0x41, 0xae };
  286. #endif
  287. //数据库接口
  288. interface IDataBase : public IUnknownEx
  289. {
  290. //连接接口
  291. public:
  292. //打开连接
  293. virtual VOID OpenConnection() = NULL;
  294. //关闭连接
  295. virtual VOID CloseConnection() = NULL;
  296. //连接信息
  297. virtual bool SetConnectionInfo(DWORD dwDBAddr, WORD wPort, LPCTSTR szDBName, LPCTSTR szUser, LPCTSTR szPassword) = NULL;
  298. //连接信息
  299. virtual bool SetConnectionInfo(LPCTSTR szDBAddr, WORD wPort, LPCTSTR szDBName, LPCTSTR szUser, LPCTSTR szPassword) = NULL;
  300. //参数接口
  301. public:
  302. //清除参数
  303. virtual VOID ClearParameters() = NULL;
  304. //获取参数
  305. virtual VOID GetParameter(LPCTSTR pszParamName, CDBVarValue & DBVarValue) = NULL;
  306. //插入参数
  307. virtual VOID AddParameter(LPCTSTR pszName, ADOCG::DataTypeEnum Type, ADOCG::ParameterDirectionEnum Direction, LONG lSize, CDBVarValue & DBVarValue) = NULL;
  308. //控制接口
  309. public:
  310. //切换记录
  311. virtual VOID NextRecordset() = NULL;
  312. //关闭记录
  313. virtual VOID CloseRecordset() = NULL;
  314. //绑定对象
  315. virtual VOID BindToRecordset(CADORecordBinding * pBind) = NULL;
  316. //记录接口
  317. public:
  318. //往下移动
  319. virtual VOID MoveToNext() = NULL;
  320. //移到开头
  321. virtual VOID MoveToFirst() = NULL;
  322. //是否结束
  323. virtual bool IsRecordsetEnd() = NULL;
  324. //获取数目
  325. virtual LONG GetRecordCount() = NULL;
  326. //返回数值
  327. virtual LONG GetReturnValue() = NULL;
  328. //获取数据
  329. virtual VOID GetRecordsetValue(LPCTSTR pszItem, CDBVarValue & DBVarValue) = NULL;
  330. //控制接口
  331. public:
  332. //存储过程
  333. virtual VOID ExecuteProcess(LPCTSTR pszSPName, bool bRecordset) = NULL;
  334. //执行语句
  335. virtual VOID ExecuteSentence(LPCTSTR pszCommand, bool bRecordset) = NULL;
  336. };
  337. //////////////////////////////////////////////////////////////////////////////////
  338. #ifdef _UNICODE
  339. #define VER_IDataBaseEngine INTERFACE_VERSION(1,1)
  340. static const GUID IID_IDataBaseEngine = { 0x3c56956d, 0x1690, 0x4c22, 0x88, 0x34, 0x9e, 0xb9, 0xd0, 0x93, 0x66, 0x4c };
  341. #else
  342. #define VER_IDataBaseEngine INTERFACE_VERSION(1,1)
  343. static const GUID IID_IDataBaseEngine = { 0x47b5a119, 0x1676, 0x49a3, 0xbe, 0xae, 0xca, 0x27, 0xeb, 0x59, 0x97, 0x22 };
  344. #endif
  345. //数据库引擎
  346. interface IDataBaseEngine : public IServiceModule
  347. {
  348. //信息接口
  349. public:
  350. //引擎负荷
  351. virtual bool GetBurthenInfo(tagBurthenInfo & BurthenInfo) = NULL;
  352. //配置接口
  353. public:
  354. //配置模块
  355. virtual bool SetDataBaseEngineSink(IUnknownEx * pIUnknownEx) = NULL;
  356. //配置模块
  357. virtual bool SetDataBaseEngineSink(IUnknownEx * pIUnknownEx[], WORD wSinkCount) = NULL;
  358. //请求控制
  359. public:
  360. //控制事件
  361. virtual bool PostDataBaseControl(WORD wControlID, VOID * pData, WORD wDataSize) = NULL;
  362. //请求事件
  363. virtual bool PostDataBaseRequest(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) = NULL;
  364. //延期请求
  365. virtual bool DeferDataBaseRequest(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) = NULL;
  366. };
  367. //////////////////////////////////////////////////////////////////////////////////
  368. #ifdef _UNICODE
  369. #define VER_IDataBaseEngineSink INTERFACE_VERSION(1,1)
  370. static const GUID IID_IDataBaseEngineSink = { 0x295c258b, 0xfad0, 0x41ac, 0x0099, 0x19, 0xc5, 0x64, 0x54, 0xec, 0x3a, 0xf9 };
  371. #else
  372. #define VER_IDataBaseEngineSink INTERFACE_VERSION(1,1)
  373. static const GUID IID_IDataBaseEngineSink = { 0x0ed26ed6, 0x69d7, 0x4f5b, 0x00b0, 0xca, 0x17, 0xae, 0xab, 0xba, 0x06, 0xdf };
  374. #endif
  375. //数据库钩子
  376. interface IDataBaseEngineSink : public IUnknownEx
  377. {
  378. //系统事件
  379. public:
  380. //启动事件
  381. virtual bool OnDataBaseEngineStart(IUnknownEx * pIUnknownEx) = NULL;
  382. //停止事件
  383. virtual bool OnDataBaseEngineConclude(IUnknownEx * pIUnknownEx) = NULL;
  384. //内核事件
  385. public:
  386. //时间事件
  387. virtual bool OnDataBaseEngineTimer(DWORD dwTimerID, WPARAM dwBindParameter) = NULL;
  388. //控制事件
  389. virtual bool OnDataBaseEngineControl(WORD wControlID, VOID * pData, WORD wDataSize) = NULL;
  390. //请求事件
  391. virtual bool OnDataBaseEngineRequest(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) = NULL;
  392. };
  393. //////////////////////////////////////////////////////////////////////////////////
  394. #ifdef _UNICODE
  395. #define VER_IUDPNetworkEngine INTERFACE_VERSION(1,1)
  396. static const GUID IID_IUDPNetworkEngine = { 0xbbbd895a, 0x0a97, 0x4fae, 0x8e, 0x38, 0x10, 0x76, 0xa7, 0xc7, 0x4d, 0x7f };
  397. #else
  398. #define VER_IUDPNetworkEngine INTERFACE_VERSION(1,1)
  399. static const GUID IID_IUDPNetworkEngine = { 0x8d138a9b, 0xa97d, 0x4d51, 0x9d, 0x6c, 0xd8, 0x6e, 0xa1, 0x84, 0x45, 0x2e };
  400. #endif
  401. //网络引擎
  402. interface IUDPNetworkEngine : public IServiceModule
  403. {
  404. //信息接口
  405. public:
  406. //配置端口
  407. virtual WORD GetServicePort() = NULL;
  408. //当前端口
  409. virtual WORD GetCurrentPort() = NULL;
  410. //配置接口
  411. public:
  412. //设置接口
  413. virtual bool SetUDPNetworkEngineEvent(IUnknownEx * pIUnknownEx) = NULL;
  414. //设置参数
  415. virtual bool SetServiceParameter(WORD wServicePort, WORD wMaxConnect) = NULL;
  416. //发送接口
  417. public:
  418. //发送函数
  419. virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID) = NULL;
  420. //发送函数
  421. virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL;
  422. //控制接口
  423. public:
  424. //关闭连接
  425. virtual bool CloseSocket(DWORD dwSocketID) = NULL;
  426. //设置关闭
  427. virtual bool ShutDownSocket(DWORD dwSocketID) = NULL;
  428. };
  429. //////////////////////////////////////////////////////////////////////////////////
  430. #ifdef _UNICODE
  431. #define VER_ITCPNetworkEngine INTERFACE_VERSION(1,1)
  432. static const GUID IID_ITCPNetworkEngine = { 0x9aa6931f, 0x417f, 0x43a7, 0x86, 0xab, 0x56, 0x10, 0xe4, 0x34, 0x1c, 0x17 };
  433. #else
  434. #define VER_ITCPNetworkEngine INTERFACE_VERSION(1,1)
  435. static const GUID IID_ITCPNetworkEngine = { 0x7747f683, 0xc0da, 0x4588, 0x89, 0xcc, 0x15, 0x93, 0xac, 0xc0, 0x44, 0xc8 };
  436. #endif
  437. //网络引擎
  438. interface ITCPNetworkEngine : public IServiceModule
  439. {
  440. //信息接口
  441. public:
  442. //配置端口
  443. virtual WORD GetServicePort() = NULL;
  444. //当前端口
  445. virtual WORD GetCurrentPort() = NULL;
  446. //配置接口
  447. public:
  448. //设置接口
  449. virtual bool SetTCPNetworkEngineEvent(IUnknownEx * pIUnknownEx) = NULL;
  450. //设置参数
  451. virtual bool SetServiceParameter(WORD wServicePort, WORD wMaxConnect, LPCTSTR pszCompilation) = NULL;
  452. //发送接口
  453. public:
  454. //发送函数
  455. virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID/*, int dTablePrivate = 0, DWORD dUserID = 0, PVOID pGetGameString = NULL*/) = NULL;
  456. //发送函数
  457. virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize/*, int dTablePrivate = 0, DWORD dUserID = 0, PVOID pGetGameString = NULL*/) = NULL;
  458. //批量发送
  459. virtual bool SendDataBatch(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize, BYTE cbBatchMask/*, int dTablePrivate = 0, DWORD dUserID = 0, PVOID pGetGameString = NULL*/) = NULL;
  460. //控制接口
  461. public:
  462. //关闭连接
  463. virtual bool CloseSocket(DWORD dwSocketID) = NULL;
  464. //设置关闭
  465. virtual bool ShutDownSocket(DWORD dwSocketID) = NULL;
  466. //允许群发
  467. virtual bool AllowBatchSend(DWORD dwSocketID, bool bAllowBatch, BYTE cbBatchMask) = NULL;
  468. //同步消息
  469. virtual bool OnTBDataEvent(int iCommend, DWORD dwContextID, void * pBuffer, WORD wDataSize) = NULL;
  470. };
  471. //////////////////////////////////////////////////////////////////////////////////
  472. #ifdef _UNICODE
  473. #define VER_ITCPSocketService INTERFACE_VERSION(1,1)
  474. static const GUID IID_ITCPSocketService = { 0x0f8a5c14, 0xab92, 0x467c, 0xb6, 0x7b, 0x6d, 0x8a, 0xcf, 0x64, 0x52, 0xd7 };
  475. #else
  476. #define VER_ITCPSocketService INTERFACE_VERSION(1,1)
  477. static const GUID IID_ITCPSocketService = { 0x709a4449, 0xad77, 0x4b3d, 0xb4, 0xd6, 0x8d, 0x0b, 0x28, 0x65, 0xec, 0xae };
  478. #endif
  479. //网络接口
  480. interface ITCPSocketService : public IServiceModule
  481. {
  482. //配置接口
  483. public:
  484. //配置函数
  485. virtual bool SetServiceID(WORD wServiceID) = NULL;
  486. //设置接口
  487. virtual bool SetTCPSocketEvent(IUnknownEx * pIUnknownEx) = NULL;
  488. //功能接口
  489. public:
  490. //关闭连接
  491. virtual bool CloseSocket() = NULL;
  492. //连接地址
  493. virtual bool Connect(DWORD dwServerIP, WORD wPort) = NULL;
  494. //连接地址
  495. virtual bool Connect(LPCTSTR szServerIP, WORD wPort) = NULL;
  496. //发送函数
  497. virtual bool SendData(WORD wMainCmdID, WORD wSubCmdID /*,int dTablePrivate = 0, DWORD dUserID = 0, PVOID pGetGameString = NULL*/) = NULL;
  498. //发送函数
  499. virtual bool SendData(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize /*, int dTablePrivate = 0, DWORD dUserID = 0, PVOID pGetGameString = NULL*/) = NULL;
  500. };
  501. //////////////////////////////////////////////////////////////////////////////////
  502. #ifdef _UNICODE
  503. #define VER_IWEBSocketService INTERFACE_VERSION(1,1)
  504. static const GUID IID_IWEBSocketService = { 0x5502d590, 0xc446, 0x440d, 0xa1, 0x95, 0x3e, 0xda, 0x11, 0xf8, 0x0d, 0x64 };
  505. #else
  506. #define VER_IWEBSocketService INTERFACE_VERSION(1,1)
  507. static const GUID IID_IWEBSocketService = { 0x91052ff2, 0xeb29, 0x40b9, 0xb2, 0xa2, 0x8a, 0xa2, 0x98, 0x36, 0x2c, 0x84 };
  508. #endif
  509. //网络接口
  510. interface IWEBSocketService : public IServiceModule
  511. {
  512. //配置接口
  513. public:
  514. //配置函数
  515. virtual bool SetServiceID(WORD wServiceID) = NULL;
  516. //设置接口
  517. virtual bool SetWEBSocketEvent(IUnknownEx * pIUnknownEx) = NULL;
  518. //功能接口
  519. public:
  520. //关闭连接
  521. virtual bool CloseSocket(BYTE cbShutReason) = NULL;
  522. //连接操作
  523. virtual bool ConnectServer(LPCTSTR pszURL, WORD wPort) = NULL;
  524. //发送请求
  525. virtual bool SendRequestData(VOID * pData, WORD wDataSize) = NULL;
  526. };
  527. //////////////////////////////////////////////////////////////////////////////////
  528. #ifdef _UNICODE
  529. #define VER_ITimerEngine INTERFACE_VERSION(1,1)
  530. static const GUID IID_ITimerEngine = { 0xc90cfc81, 0xee01, 0x4654, 0x008c, 0x9a, 0x58, 0xa9, 0x4b, 0x78, 0x76, 0xb6 };
  531. #else
  532. #define VER_ITimerEngine INTERFACE_VERSION(1,1)
  533. static const GUID IID_ITimerEngine = { 0x496401ae, 0x6fb0, 0x4e9f, 0x0090, 0x98, 0x44, 0x9d, 0x9c, 0xb2, 0xbd, 0x97 };
  534. #endif
  535. //定时器引擎
  536. interface ITimerEngine : public IServiceModule
  537. {
  538. //配置接口
  539. public:
  540. //设置接口
  541. virtual bool SetTimerEngineEvent(IUnknownEx * pIUnknownEx) = NULL;
  542. //功能接口
  543. public:
  544. //设置定时器
  545. virtual bool SetTimer(DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter) = NULL;
  546. //删除定时器
  547. virtual bool KillTimer(DWORD dwTimerID) = NULL;
  548. //删除定时器
  549. virtual bool KillAllTimer() = NULL;
  550. //删除空闲定时器
  551. virtual bool KillAllFreeTimer() = NULL;
  552. };
  553. //////////////////////////////////////////////////////////////////////////////////
  554. #ifdef _UNICODE
  555. #define VER_ITimerEngineEvent INTERFACE_VERSION(1,1)
  556. static const GUID IID_ITimerEngineEvent = { 0x995c4868, 0x81b8, 0x4c52, 0x00a2, 0x15, 0x71, 0x97, 0x0d, 0x16, 0xaf, 0xb7 };
  557. #else
  558. #define VER_ITimerEngineEvent INTERFACE_VERSION(1,1)
  559. static const GUID IID_ITimerEngineEvent = { 0xeb78a125, 0x62fc, 0x4811, 0x00b6, 0xf2, 0x59, 0x26, 0x88, 0x04, 0xc3, 0x02 };
  560. #endif
  561. //定时器事件
  562. interface ITimerEngineEvent : public IUnknownEx
  563. {
  564. //接口定义
  565. public:
  566. //时间事件
  567. virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter) = NULL;
  568. };
  569. //////////////////////////////////////////////////////////////////////////////////
  570. #ifdef _UNICODE
  571. #define VER_IDataBaseEngineEvent INTERFACE_VERSION(1,1)
  572. static const GUID IID_IDataBaseEngineEvent = { 0x344ea7f2, 0x633b, 0x4580, 0x0080, 0xa9, 0xa9, 0x4a, 0x46, 0x12, 0xce, 0x73 };
  573. #else
  574. #define VER_IDataBaseEngineEvent INTERFACE_VERSION(1,1)
  575. static const GUID IID_IDataBaseEngineEvent = { 0xc29c7131, 0xe84b, 0x4553, 0x00a8, 0x38, 0x12, 0xee, 0x07, 0xdd, 0x0e, 0xa3 };
  576. #endif
  577. //数据库事件
  578. interface IDataBaseEngineEvent : public IUnknownEx
  579. {
  580. //接口定义
  581. public:
  582. //数据库结果
  583. virtual bool OnEventDataBaseResult(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) = NULL;
  584. };
  585. //////////////////////////////////////////////////////////////////////////////////
  586. #ifdef _UNICODE
  587. #define VER_ITCPSocketEvent INTERFACE_VERSION(1,1)
  588. static const GUID IID_ITCPSocketEvent = { 0x0400c2de, 0x69b1, 0x4136, 0x00af, 0x30, 0x2d, 0x2d, 0x1e, 0x35, 0x51, 0x24 };
  589. #else
  590. #define VER_ITCPSocketEvent INTERFACE_VERSION(1,1)
  591. static const GUID IID_ITCPSocketEvent = { 0x6f5bdb91, 0xf72a, 0x425d, 0x0087, 0x03, 0x39, 0xbc, 0xf7, 0x1e, 0x0b, 0x03 };
  592. #endif
  593. //网络事件
  594. interface ITCPSocketEvent : public IUnknownEx
  595. {
  596. //连接事件
  597. virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode) = NULL;
  598. //关闭事件
  599. virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason) = NULL;
  600. //读取事件
  601. virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize) = NULL;
  602. };
  603. //////////////////////////////////////////////////////////////////////////////////
  604. #ifdef _UNICODE
  605. #define VER_IWEBSocketEvent INTERFACE_VERSION(1,1)
  606. static const GUID IID_IWEBSocketEvent = { 0x9f64bb2b, 0xb60b, 0x4ef9, 0xa2, 0xb1, 0x49, 0xca, 0x87, 0xc9, 0x19, 0xe4 };
  607. #else
  608. #define VER_IWEBSocketEvent INTERFACE_VERSION(1,1)
  609. static const GUID IID_IWEBSocketEvent = { 0xabb2a528, 0xcc16, 0x4b67, 0xbd, 0x7b, 0x28, 0xa6, 0xce, 0x88, 0x8a, 0x33 };
  610. #endif
  611. //网络事件
  612. interface IWEBSocketEvent : public IUnknownEx
  613. {
  614. //状态接口
  615. public:
  616. //连接消息
  617. virtual bool OnEventWEBSocketLink(WORD wServiceID, WORD wRequestID, INT nErrorCode) = NULL;
  618. //关闭消息
  619. virtual bool OnEventWEBSocketShut(WORD wServiceID, WORD wRequestID, BYTE cbShutReason) = NULL;
  620. //数据接口
  621. public:
  622. //数据包流
  623. virtual bool OnEventWEBSocketMain(WORD wServiceID, WORD wRequestID, VOID * pcbMailData, WORD wStreamSize) = NULL;
  624. //数据包头
  625. virtual bool OnEventWEBSocketHead(WORD wServiceID, WORD wRequestID, VOID * pcbHeadData, WORD wHeadSize, INT nStatusCode) = NULL;
  626. };
  627. //////////////////////////////////////////////////////////////////////////////////
  628. #ifdef _UNICODE
  629. #define VER_ITCPNetworkEngineEvent INTERFACE_VERSION(1,1)
  630. static const GUID IID_ITCPNetworkEngineEvent = { 0x9759ffb3, 0x5bec, 0x4199, 0x0091, 0xef, 0x49, 0x5b, 0xca, 0xdc, 0x00, 0x98 };
  631. #else
  632. #define VER_ITCPNetworkEngineEvent INTERFACE_VERSION(1,1)
  633. static const GUID IID_ITCPNetworkEngineEvent = { 0xb7e6da53, 0xfca5, 0x4d90, 0x0085, 0x48, 0xfe, 0x05, 0xf6, 0xb4, 0xc0, 0xef };
  634. #endif
  635. //网络事件
  636. interface ITCPNetworkEngineEvent : public IUnknownEx
  637. {
  638. //接口定义
  639. public:
  640. //应答事件
  641. virtual bool OnEventTCPNetworkBind(DWORD dwSocketID, DWORD dwClientAddr) = NULL;
  642. //关闭事件
  643. virtual bool OnEventTCPNetworkShut(DWORD dwSocketID, DWORD dwClientAddr, DWORD dwActiveTime) = NULL;
  644. //读取事件
  645. virtual bool OnEventTCPNetworkRead(DWORD dwSocketID, TCP_Command Command, VOID * pData, WORD wDataSize) = NULL;
  646. };
  647. //////////////////////////////////////////////////////////////////////////////////
  648. #ifdef _UNICODE
  649. #define VER_IAttemperEngine INTERFACE_VERSION(1,1)
  650. static const GUID IID_IAttemperEngine = { 0x4d5d2424, 0x40fd, 0x4747, 0x86, 0xd8, 0x8f, 0xca, 0x6b, 0x96, 0xea, 0x0b };
  651. #else
  652. #define VER_IAttemperEngine INTERFACE_VERSION(1,1)
  653. static const GUID IID_IAttemperEngine = { 0x0b070b2c, 0x9d72, 0x42d2, 0xa5, 0x70, 0xba, 0x2c, 0xbf, 0x6f, 0xbb, 0x1c };
  654. #endif
  655. //调度引擎
  656. interface IAttemperEngine : public IServiceModule
  657. {
  658. //配置接口
  659. public:
  660. //网络接口
  661. virtual bool SetNetworkEngine(IUnknownEx * pIUnknownEx) = NULL;
  662. //回调接口
  663. virtual bool SetAttemperEngineSink(IUnknownEx * pIUnknownEx) = NULL;
  664. //控制事件
  665. public:
  666. //自定事件
  667. virtual bool OnEventCustom(WORD wRequestID, VOID * pData, WORD wDataSize) = NULL;
  668. //控制事件
  669. virtual bool OnEventControl(WORD wControlID, VOID * pData, WORD wDataSize) = NULL;
  670. };
  671. //////////////////////////////////////////////////////////////////////////////////
  672. #ifdef _UNICODE
  673. #define VER_IAttemperEngineSink INTERFACE_VERSION(1,1)
  674. static const GUID IID_IAttemperEngineSink = { 0x133d1f30, 0x54ce, 0x4360, 0x0084, 0x50, 0x87, 0x29, 0xe0, 0x95, 0xaa, 0xbb };
  675. #else
  676. #define VER_IAttemperEngineSink INTERFACE_VERSION(1,1)
  677. static const GUID IID_IAttemperEngineSink = { 0x831b9001, 0x4450, 0x45dd, 0x0091, 0x37, 0x0d, 0x26, 0x16, 0xe3, 0x75, 0x32 };
  678. #endif
  679. //调度钩子
  680. interface IAttemperEngineSink : public IUnknownEx
  681. {
  682. //异步接口
  683. public:
  684. //启动事件
  685. virtual bool OnAttemperEngineStart(IUnknownEx * pIUnknownEx) = NULL;
  686. //停止事件
  687. virtual bool OnAttemperEngineConclude(IUnknownEx * pIUnknownEx) = NULL;
  688. //事件接口
  689. public:
  690. //控制事件
  691. virtual bool OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize) = NULL;
  692. //自定事件
  693. virtual bool OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize) = NULL;
  694. //内核事件
  695. public:
  696. //时间事件
  697. virtual bool OnEventTimer(DWORD dwTimerID, WPARAM wBindParam) = NULL;
  698. //数据库事件
  699. virtual bool OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize) = NULL;
  700. //连接事件
  701. public:
  702. //连接事件
  703. virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode) = NULL;
  704. //关闭事件
  705. virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason) = NULL;
  706. //读取事件
  707. virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize) = NULL;
  708. //网络事件
  709. public:
  710. //应答事件
  711. virtual bool OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID) = NULL;
  712. //关闭事件
  713. virtual bool OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID) = NULL;
  714. //读取事件
  715. virtual bool OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID) = NULL;
  716. //同步事件
  717. virtual bool OnTongBu(int Command, DWORD dwContextID, VOID * pData, WORD wDataSize) = NULL;//同步事件
  718. };
  719. //////////////////////////////////////////////////////////////////////////////////
  720. //组件辅助类
  721. DECLARE_MODULE_HELPER(DataBase, KERNEL_ENGINE_DLL_NAME, "CreateDataBase")
  722. DECLARE_MODULE_HELPER(TimerEngine, KERNEL_ENGINE_DLL_NAME, "CreateTimerEngine")
  723. DECLARE_MODULE_HELPER(DataBaseEngine, KERNEL_ENGINE_DLL_NAME, "CreateDataBaseEngine")
  724. DECLARE_MODULE_HELPER(AttemperEngine, KERNEL_ENGINE_DLL_NAME, "CreateAttemperEngine")
  725. DECLARE_MODULE_HELPER(TCPSocketService, KERNEL_ENGINE_DLL_NAME, "CreateTCPSocketService")
  726. DECLARE_MODULE_HELPER(WEBSocketService, KERNEL_ENGINE_DLL_NAME, "CreateWEBSocketService")
  727. DECLARE_MODULE_HELPER(TCPNetworkEngine, KERNEL_ENGINE_DLL_NAME, "CreateTCPNetworkEngine")
  728. DECLARE_MODULE_HELPER(UDPNetworkEngine, KERNEL_ENGINE_DLL_NAME, "CreateUDPNetworkEngine")
  729. DECLARE_MODULE_HELPER(AsynchronismEngine, KERNEL_ENGINE_DLL_NAME, "CreateAsynchronismEngine")
  730. DECLARE_MODULE_HELPER(TraceServiceManager, KERNEL_ENGINE_DLL_NAME, "CreateTraceServiceManager")
  731. //////////////////////////////////////////////////////////////////////////////////
  732. //导出文件
  733. #ifndef KERNEL_ENGINE_DLL
  734. #include "DataBaseAide.h"
  735. #include "TraceService.h"
  736. #include "ProcessException.h"
  737. #endif
  738. //////////////////////////////////////////////////////////////////////////////////
  739. #endif