服务器核心模块概要设计

上传人:小** 文档编号:78843980 上传时间:2022-04-22 格式:DOC 页数:45 大小:1.13MB
收藏 版权申诉 举报 下载
服务器核心模块概要设计_第1页
第1页 / 共45页
服务器核心模块概要设计_第2页
第2页 / 共45页
服务器核心模块概要设计_第3页
第3页 / 共45页
资源描述:

《服务器核心模块概要设计》由会员分享,可在线阅读,更多相关《服务器核心模块概要设计(45页珍藏版)》请在装配图网上搜索。

1、服务器核心模块概要设计1引言11.1编写目的11.2背景12总体设计22.1需求规定22.2运行环境22.3开发环境22.4基本设计概念和处理流程22.4.1调用模型22.4.2基于事件驱动的数据处理模型22.4.3事件数据设计32.4.4框架体系设计32.5功能模块划分33模块详细设计43.1数据队列服务QueueService模块设计43.1.1基本设计概念43.1.2类与接口设计43.3.1运行流程83.2网络引擎TCPSocketEngine模块设计83.2.1网络重叠完成端口IOCP简介83.2.2基本设计概念93.2.3网络数据命令包结构设计103.2.4网络数据加密设计103.2

2、.5类与接口设计113.3数据库引擎DataBaseEngine模块设计113.3.1基本设计概念113.3.2类与接口设计113.3.3运行流程223.4定时器引擎TimerEngine模块设计233.4.1基本设计概念233.4.2类与接口设计233.4.3运行流程263.5调度引擎AttemperEngine模块设计263.5.1基本设计概念263.5.2类与接口设计263.5.3运行流程303.6异步引擎AsynchronismEngine模块设计313.6.1基本设计概念313.6.2类与接口设计313.6.3运行流程343.7服务引擎ServiceEngine模块设计353.7.1

3、基本设计概念353.7.2类与接口设计353.7.3运行流程401 引言1.1 编写目的方便二次开发人员理解服务器核心技术1.2 背景3.3.1 为一般游戏服务器设计的核心模块3.3.2 本项目的任务开发者:Godzilar系统使用用户: 游戏服务器二次开发人员2 总体设计2.1 需求规定3.3.1 系统功能提供网络服务接口,数据库访问接口,定时器接口,并提供调度钩子接口,让二次开发人员调用,更多精力处理游戏逻辑3.3.2 系统性能网络负载支持2000同时在线连接以上数据库访问支持100并发访问定时器时间精度达25ms之内2.2 运行环境硬件平台:x86体系结构软件平台:Window2003操

4、作系统2.3 开发环境开发工具:Visual C+ 2003开发语言:C+2.4 基本设计概念和处理流程2.4.1 调用模型利用面向对象思想多态性,调用方保存着被调用方的基础接口指针(一般称呼为 钩子),调用方直接调用接口指针里面方法,方法具体实现逻辑由该接口的派生类实现.示意图:被调用方 B调用方 A接口指针虚类接口派生类2.4.2 基于事件驱动的数据处理模型为系统功能设计,需要处理网络事件数据SocketEvent,数据库事件数据DatabaseEvent,定时器事件数据TimerEvent等,为此建立数据队列服务QueueService,为每一队列建立多个子线程QueueServiceT

5、hread处理。数据队列服务提供添加事件数据方法AddToQueue,设置数据队列服务钩子SetQueueServiceSink,让数据队列服务钩子QueueServiceSink做具体逻辑事件数据处理。示意图:内部线程Thread处理执行数据队列服务QueueService事件数据输入执行数据队列服务钩子QueueServiceSink方法再者,根据网络,数据库等特定功能,构建网络,数据库等管理服务,实现数据队列服务钩子QueueServiceSink方法,调度事件数据执行外部处理接口,外部处理接口具体由二次开发用户实现。示意图:外部处理接口管理服务实现数据队列服务钩子QueueServic

6、eSink方法2.4.3 事件数据设计名称描述类型定时器事件TimerEvent根据时间间隔,定期产生自发,被动数据库事件DatabaseEvent请求访问数据库用户自定义,主动网络应答事件SocketAcceptEvent客户端连接网络服务,成功连接自发,被动网络读取事件SocketReadEvent客户端发送数据,网络服务成功读取自发,被动网络关闭事件SocketControlEvent客户端失去连接自发,被动控制事件ControlEvent用户自定义控制服务用户自定义,主动2.4.4 框架体系设计外部 实现内部 服务引擎ServiceEngine调度引擎AttemperEngine网络引

7、擎TCPSocketEngine数据库引擎DataBaseEngine定时器引擎TimerEngine 调度引擎钩子AttemperEngineSink 数据库引擎钩子DataBaseSink异步引擎TimerEngine 异步引擎钩子DataBaseSink2.5 功能模块划分名称描述开发优先数据队列服务QueueService外部接受输入事件数据,内部实现事件数据链表保存与管理, 处理子线程从链表获取事件数据调用数据队列钩子方法处理事件数据1网络引擎TCPSocketEngine实现数据队列服务钩子方法,管理网络事件数据,内部启动网络服务器监听服务,接收与发送网络数据,并调用网络处理钩子进

8、行逻辑处理2数据库引擎DataBaseEngine实现数据队列服务钩子方法,管理数据库事件数据,并调用数据库处理钩子进行逻辑处理,还提供数据库访问的帮助类2定时器引擎TimerEngine实现设置定时,删除定时请求,发生定时事件2调度引擎AttemperEngine接收,调度与管理网络事件数据,数据库事件数据,定时器事件数据,自定义调度事件数据2异步引擎AsynchronismEngine设置多个数据处理钩子,异步接收请求并处理2服务引擎ServiceEngine管理网络引擎,数据库引擎,定时器引擎,调度引擎,异步引擎33 模块详细设计3.1 数据队列服务QueueService模块设计3.1

9、.1 基本设计概念建立一个内存链表,保存事件数据,对外部提供方法往链表添加事件数据并通知线程,同时启动多个处理线程,从数据链表里获取事件数据,执行外部钩子方法进行处理.线程事件通知采用完成端口技术.3.1.2 类与接口设计l 接口设计IQueueServiceEngine队列引擎接口模块QueueService继承IQueueServiceEngine IUnknownEx实现数据成员名称说明方法virtual bool _cdecl StartService(BYTE cbThreadCount)说明开始服务参数BYTE cbThreadCount 处理事件数据的线程数量返回类型为Bool,

10、启动成功返回true,否则false举例virtual bool _cdecl StopService()说明停止服务参数返回类型为Bool,启动成功返回true,否则false举例virtual bool _cdecl SetQueueServiceSink(IUnknownEx * pIUnknownEx)说明设置接口外部事件处理钩子参数IUnknownEx * pIUnknownEx 外部事件数据处理钩子返回类型为Bool,设置成功返回true,否则false举例virtual bool _cdecl GetBurthenInfo(tagBurthenInfo & BurthenInfo

11、)说明获取数据队列负荷信息参数tagBurthenInfo & BurthenInfo 负荷信息结构体返回类型为Bool,设置成功返回true,否则false举例IQueueServiceSink队列服务钩子,由外部继层实现模块QueueService继承IQueueServiceSink IUnknownEx实现数据成员名称说明方法virtual void _cdecl OnQueueServiceSink(BYTE cbThreadIndex,WORD wIdentifier, void * pBuffer, WORD wDataSize, DWORD dwInsertTime)说明通知回

12、调函数参数BYTE cbThreadIndex 处理事件数据的线程索引WORD wIdentifier 事件数据标记void * pBuffer 数据指针WORD wDataSize 数据大小DWORD dwInsertTime 插入时间值返回举例l 类设计CQueueServiceThread队列处理线程类模块QueueService继承CQueueServiceThread CServiceThread实现数据成员名称说明HANDLEm_hCompletionPort完成端口句柄BYTE m_cbThreadIndex线程索引BYTE m_cbBufferMAX_QUEUE_PACKET事

13、件接收缓冲方法bool InitThread(HANDLE hCompletionPort,BYTE cbThreadIndex)说明配置参数HANDLE hCompletionPort 完成端口句柄BYTE cbThreadIndex 线程索引返回类型为Bool,设置成功返回true,否则false举例bool UnInitThread()说明取消配置参数返回类型为Bool,设置成功返回true,否则false举例virtual bool RepetitionRun()说明线程运行函数参数返回类型为Bool举例CQueueService队列服务类模块QueueService继承CQueueS

14、ervice IQueueServiceEngine, IQueueService实现IQueueServiceEngine, IQueueService数据成员名称说明boolm_bService服务标志IQueueServiceSink * m_pIQueueServiceSink回调钩子接口CThreadLockm_ThreadLock线程锁CDataStoragem_DataStorage数据存储CQueueServiceThread*m_QueueServiceThread队列线程HANDLE*m_hCompletionPort 完成端口指针BYTEm_cbThreadCount 线

15、程处理数目方法virtual bool _cdecl AddToQueue(WORD wIdentifier, void * const pBuffer, WORD wDataSize)说明添加事件数据参数WORD wIdentifier 事件数据标记void * const pBuffer 事件数据指针WORD wDataSize 事件数据大小返回类型为Bool,添加成功返回true,否则false举例virtual bool _cdecl StartService(BYTE cbThreadCount)说明开始服务参数BYTE cbThreadCount 线程数量返回类型为Bool,开始成

16、功返回true,否则false举例virtual bool _cdecl StopService()说明停止服务参数返回类型为Bool, 停止成功返回true,否则false举例virtual bool _cdecl SetQueueServiceSink(IUnknownEx * pIUnknownEx)说明设置接口外部事件处理钩子参数IUnknownEx * pIUnknownEx 外部事件数据处理钩子返回类型为Bool,设置成功返回true,否则false举例virtual bool _cdecl GetBurthenInfo(tagBurthenInfo & BurthenInfo)说

17、明获取数据队列负荷信息参数tagBurthenInfo & BurthenInfo 负荷信息结构体返回类型为Bool,设置成功返回true,否则false举例bool GetData(tagDataHead & DataHead, void * pBuffer, WORD wBufferSize)说明获取事件数据参数tagDataHead & DataHead 事件数据头void * pBuffer 数据指针WORD wBufferSize 数据大小返回类型为Bool,获取成功返回true,否则false举例void OnQueueServiceThread(BYTE cbThreadInde

18、x, const tagDataHead & DataHead, void * pBuffer, WORD wDataSize)说明事件消息,主要由队列线程调用参数BYTE cbThreadIndex 线程索引tagDataHead & DataHead 事件数据头void * pBuffer 数据指针WORD wBufferSize 数据大小返回举例l 类继承图队列类引擎接口IQueueServiceEngine数据队列接口IQueueService数据队列类CQueueService线程对象类CServiceThread队列线程类CQueueServiceThread3.3.1 运行流程开

19、始服务StartService停止服务StopService加入数据AddToQueue设置钩子接口SetQueueServiceSink保存数据 AddData随机通知线程处理PostQueuedCompletionStatus处理线程CQueueServiceThread运行 RepetitionRun等待完成端口事件GetQueuedCompletionStatus获取数据GetData调用外部钩子方法处理OnQueueServiceSink3.2 网络引擎TCPSocketEngine模块设计3.2.1 网络重叠完成端口IOCP简介完成端口:是一个FIFO队列,操作系统的IO子系统在I

20、O操作完成后,会把相应的IO packet放入该队列。-等待者线程队列:通过调用GetQueuedCompletionStatus API,在完成端口上等待取下一个IO packet。执行者线程组:已经从完成端口上获得IO packet,在占用CPU进行处理。除了以上三种类型的参与者。我们还应该注意两个关联关系,即:IO Handle与完成端口相关联:任何期望使用IOCP的方式来处理IO请求的,必须将相应的IO Handle与该完成端口相关联。需要指出的时,这里的IO Handle,可以是File的Handle,或者是Socket的Handle。-线程与完成端口相关联:任何调用GetQueue

21、dCompletionStatus API的线程,都将与该完成端口相关联。在任何给定的时候,该线程只能与一个完成端口相关联,与最后一次调用的GetQueuedCompletionStatus为准.对于网络重叠完成端口体系示意图如下:操作系统线程用户工作线程Accept网络监听接收绑定socket句柄CreateIoCompletionPort(socket句柄,)完成端口m_hCompletionPortWSARecv 请求读取数据WSASend 请求发送数据操作系统的IO子系统处理请求GetQueuedCompletionStatus 判断完成端口状态操作线程WSARecv, WSASend

22、请求处理完毕执行逻辑处理,例如再次WSARecv请求等网络重叠完成端口使用示意图如下:创建完成端口m_hCompletionPort=CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,NULL,SystemInfo.dwNumberOfProcessors);绑定socket句柄CreateIoCompletionPort(HANDLE)hConnectSocket,m_hCompletionPort,(ULONG_PTR)pServerSocketItem,0);关闭完成端口CloseHandle(m_hCompletionPort);3.2.

23、2 基本设计概念建立数据队列服务QueueService,对外部输入的对socket的发送,关闭请求等处理。同时建立工作线程SocketAcceptThread做应答Socket,建立读写工作线程ServerSocketRSThread判断完成端口状态,等待系统线程处理读写操作完成,如果完成读操作,发送调度事件到调度引擎处理,并继续投递读操作,如果完成发送操作,判断还有发送请求就继续投递发送请求。最后建立检测工作线程,发送心跳包,检测断线socket连接。l 数据设计与管理先设计客户端连接项ServerSocketItem,实现对客户端连接Socket的发送,接收数据,加密/解密网络包,关闭等

24、操作再设计网络引擎TCPSocketEngine,对客户端连接项的管理,同时接收外部的输入操作请求,还有对应答线程,读写线程,检测线程管理设计应答线程,读写线程,检测线程的功能进行封装,还有重叠数据的帮助封装。l 工作线程运行设计读写线程ServerSocketRSThread判断完成端口状态,内部线程Thread处理执行数据队列服务QueueService外部发送请求SendData关闭请求CloseSocket等执行数据队列服务钩子QueueServiceSink方法该钩子IQueueServiceSink由网络引擎管理类TCPSocketEngine继承实现QUEUE_SEND_REQU

25、EST 发送请求QUEUE_SAFE_CLOSE关闭请求QUEUE_ALLOW_BATCH容许群发QUEUE_DETECT_SOCKET 检测连接检测线程SocketDetectThread客户端连接项CServerSocketItem处理请求应答线程SocketAcceptThread应答,生成客户端连接项3.2.3 网络数据命令包结构设计网络数据包分两个区域:包头,用户数据包头:每个网络包都带的数据区域,装载数据包结构信息与数据包命令信息用户数据:根据命令信息不一样,用户自定义的负载数据具体结构如下:网络命令包CMD_Head 数据包传递包头CMD_Info 数据包结构信息具体字段:WOR

26、DwDataSize;/数据大小BYTEcbCheckCode;/效验字段BYTEcbMessageVer;/版本标识CMD_Command 数据包命令信息具体字段:WORDwMainCmdID;/ 主命令码WORDwSubCmdID;/ 子命令码CMD_Data 用户命令数据3.2.4 网络数据加密设计数据加密部分为CMD_Command 数据包命令信息 与 CMD_Data 用户命令数据, CMD_Info 数据包结构信息不加密.加密算法为根据字节影射表,将字节替换。例如数据包第6个字节是0x90,通过字节影射表查找,对应的是0x1d,则该字节替换为0x1d发送.3.2.5 类与接口设计l

27、 接口设计请查阅 SocketEngine.h 头文件l 类设计请查阅 SocketEngine.h 头文件l 类继承图重叠结构类COverLapped重叠结构模板类CATLOverLapped服务线程类CServiceThread读写线程类CServerSocketRSThreadTCP SOCKET 引擎接口ITCPSocketEngineTCP SOCKET 引擎管理接口ITCPSocketEngineManager网络引擎类CTCPSocketEngine连接对象回调接口IServerSocketItemSink数据队列类钩子接口IQueueServiceSink服务线程类CServi

28、ceThread应答线程类CSocketAcceptThread3.3 数据库引擎DataBaseEngine模块设计3.3.1 基本设计概念数据库引擎建立数据队列服务,接受外部数据库事件数据输入,并调用外部数据库处理钩子方法处理.且提供数据库帮助类对象,实现对数据库访问,数据访问技术采用ADO.3.3.2 类与接口设计l 接口设计IADOError数据库错误接口模块Database继承IADOError IUnknownEx实现数据成员名称说明方法virtual LPCTSTR _cdecl GetErrorDescribe()说明获取错误描述参数返回描述错误的文本字符串举例virtual

29、enADOErrorType _cdecl GetErrorType()说明获取错误类型参数返回错误类型的枚举值举例IDataBase数据库连接并访问接口模块Database继承IDataBase IUnknownEx实现数据成员名称说明方法virtual bool _cdecl OpenConnection()说明打开连接参数返回操作成功返回ture,否则flase举例virtual bool _cdecl CloseRecordset()说明关闭记录参数返回操作成功返回ture,否则flase举例virtual bool _cdecl CloseConnection()说明关闭连接参数返回

30、操作成功返回ture,否则flase举例virtual bool _cdecl TryConnectAgain(bool bFocusConnect, CComError * pComError)说明重新连接参数bool bFocusConnect 强制性连接标记CComError * pComError 错误保存返回操作成功返回ture,否则flase举例virtual bool _cdecl SetConnectionInfo(LPCTSTR szIP, LPCTSTR szPipeName,WORD wPort, LPCTSTR szData, LPCTSTR szName, LPCTS

31、TR szPass)说明设置信息参数LPCTSTR szIP 数据库服务器IP地址LPCTSTR szPipeName 数据库命名实列通道WORD wPort 端口LPCTSTR szData 数据库名称 LPCTSTR szName 访问用户名LPCTSTR szPass 访问密码返回操作成功返回ture,否则flase举例virtual bool _cdecl IsConnectError()说明判断是否连接错误参数返回操作成功返回ture,否则flase举例virtual bool _cdecl IsRecordsetOpened ()说明判断是否打开记录集参数返回操作成功返回ture,

32、否则flase举例virtual bool _cdecl MoveToNext ()说明往下移动记录游标参数返回操作成功返回ture,否则flase举例virtual bool _cdecl MoveToFirst()说明移到开头参数返回操作成功返回ture,否则flase举例virtual bool _cdecl IsEndRecordset ()说明是否结束参数返回操作成功返回ture,否则flase举例virtual long _cdecl GetRecordCount ()说明获取数目参数返回操作成功返回记录数目举例virtual long _cdecl GetActualSize(L

33、PCTSTR pszParamName)说明获取字段大小参数LPCTSTR pszParamName 参数名称返回操作成功返回字段大小举例virtual long _cdecl BindToRecordset(CADORecordBinding * pBind)说明绑定对象参数CADORecordBinding * pBind 数据库记录绑定对象指针返回操作成功返回0举例virtual long _cdecl NextRecordset ()说明下一记录集参数返回操作成功返回0举例virtual bool _cdecl GetFieldValue ()说明获取记录集的数据参数LPCTSTR l

34、pFieldName 字段名称X & bValue 字段数据值返回操作成功返回true举例virtual void _cdecl SetSPName(LPCTSTR pszSpName)说明获取存储过程名称参数LPCTSTR pszSpName 存储过程名称返回举例virtual void _cdecl AddParamter(LPCTSTR pszName, ADOCG:ParameterDirectionEnum Direction, ADOCG:DataTypeEnum Type, long lSize, _variant_t & vtValue)说明添加参数参数LPCTSTR pszN

35、ame 字段名称ADOCG:ParameterDirectionEnum Direction 参数输入输出方向标记ADOCG:DataTypeEnum Type 参数类型long lSize 参数大小_variant_t & vtValue 参数值返回举例virtual void _cdecl ClearAllParameters()说明清除参数参数返回举例virtual void _cdecl GetParameterValue(LPCTSTR pszParamName, _variant_t & vtValue)说明获取参数值参数LPCTSTR pszParamName 参数名称_vari

36、ant_t & vtValue 参数返回值返回举例virtual long _cdecl GetReturnValue()说明获取数据库返回值参数返回举例virtual bool _cdecl Execute(LPCTSTR pszCommand)说明执行语句参数LPCTSTR pszCommand SQL语句返回操作成功返回ture,否则为false举例virtual bool _cdecl ExecuteCommand(bool bRecordset)说明执行命令参数bool bRecordset 是否返回记录集返回操作成功返回ture,否则为false举例IDataBaseSink数据库

37、钩子接口模块Database继承IDataBaseSink IUnknownEx实现数据成员名称说明方法virtual bool _cdecl StartService(IUnknownEx * pIUnknownEx)说明数据库模块启动参数IUnknownEx * pIUnknownEx 服务框架接口返回操作成功返回ture,否则false举例virtual bool _cdecl StopService(IUnknownEx * pIUnknownEx)说明数据库模块关闭参数IUnknownEx * pIUnknownEx 服务框架接口返回操作成功返回ture,否则false举例virtu

38、al bool _cdecl OnDataBaseRequest(BYTE cbThreadIndex,const NTY_DataBaseEvent & DataBaseEvent, void * pDataBuffer, WORD wDataSize)说明数据事件操作处理参数BYTE cbThreadIndex 线程索引const NTY_DataBaseEvent & DataBaseEvent 数据库事件 void * pDataBuffer 数据指针 WORD wDataSize 数据大小返回操作成功返回ture,否则false 举例IDataBaseEngine数据库引擎接口模块D

39、atabase继承IDataBaseEngine IUnknownEx实现数据成员名称说明方法virtual bool _cdecl StartService(BYTE cbThreadCount)说明启动服务参数BYTE cbThreadCount 数据库线程数量返回操作成功返回ture,否则false举例virtual bool _cdecl StopService()说明停止服务参数返回操作成功返回ture,否则false举例virtual bool _cdecl SetDataBaseSink(IUnknownEx * pIUnknownEx)说明设置数据事件操作处理钩子参数IUnkn

40、ownEx * pIUnknownEx 钩子指针返回操作成功返回ture,否则false 举例virtual void * _cdecl GetQueueService(const IID & Guid, DWORD dwQueryVer)说明获取接口参数onst IID & Guid 接口标记DWORD dwQueryVer 查询版本返回操作成功返回内存指针,否则Null举例l 类设计CADOError数据库错误类模块Database继承CADOError IADOError IUnknownEx实现IADOError数据成员名称说明enADOErrorTypem_enErrorType错误

41、代号CStringm_strErrorDescribe; 错误信息方法virtual LPCTSTR _cdecl GetErrorDescribe()说明获取错误描述参数返回描述错误的文本字符串举例virtual enADOErrorType _cdecl GetErrorType()说明获取错误类型参数返回错误类型的枚举值举例void SetErrorInfo(enADOErrorType enErrorType, LPCTSTR pszDescribe)说明设置错误参数enADOErrorType enErrorType 错误类型的枚举值LPCTSTR pszDescribe 描述错误的

42、文本字符串返回举例CDataBase数据库连接并访问类模块Database继承CDataBase IDataBase IUnknownEx实现IDataBase数据成员名称说明CADOError m_ADOError; CStringm_strConnect; CStringm_strErrorDescribe;DWORDm_dwConnectCount;DWORDm_dwConnectErrorTime; const DWORDm_dwResumeConnectCount; const DWORDm_dwResumeConnectTime; _CommandPtrm_DBCommand; _

43、RecordsetPtrm_DBRecordset;_ConnectionPtr m_DBConnection;错误对象连接字符串错误信息重试次数错误时间恢复次数恢复时间命令对象记录集对象数据库连接对象方法virtual bool _cdecl OpenConnection()说明打开连接参数返回操作成功返回ture,否则flase举例virtual bool _cdecl CloseRecordset()说明关闭记录参数返回操作成功返回ture,否则flase举例virtual bool _cdecl CloseConnection()说明关闭连接参数返回操作成功返回ture,否则flase

44、举例virtual bool _cdecl TryConnectAgain(bool bFocusConnect, CComError * pComError)说明重新连接参数bool bFocusConnect 强制性连接标记CComError * pComError 错误保存返回操作成功返回ture,否则flase举例virtual bool _cdecl SetConnectionInfo(LPCTSTR szIP, LPCTSTR szPipeName,WORD wPort, LPCTSTR szData, LPCTSTR szName, LPCTSTR szPass)说明设置信息参数

45、LPCTSTR szIP 数据库服务器IP地址LPCTSTR szPipeName 数据库命名实列通道WORD wPort 端口LPCTSTR szData 数据库名称 LPCTSTR szName 访问用户名LPCTSTR szPass 访问密码返回操作成功返回ture,否则flase举例virtual bool _cdecl IsConnectError()说明判断是否连接错误参数返回操作成功返回ture,否则flase举例virtual bool _cdecl IsRecordsetOpened ()说明判断是否打开记录集参数返回操作成功返回ture,否则flase举例virtual b

46、ool _cdecl MoveToNext ()说明往下移动记录游标参数返回操作成功返回ture,否则flase举例virtual bool _cdecl MoveToFirst()说明移到开头参数返回操作成功返回ture,否则flase举例virtual bool _cdecl IsEndRecordset ()说明是否结束参数返回操作成功返回ture,否则flase举例virtual long _cdecl GetRecordCount ()说明获取数目参数返回操作成功返回记录数目举例virtual long _cdecl GetActualSize(LPCTSTR pszParamNam

47、e)说明获取字段大小参数LPCTSTR pszParamName 参数名称返回操作成功返回字段大小举例virtual long _cdecl BindToRecordset(CADORecordBinding * pBind)说明绑定对象参数CADORecordBinding * pBind 数据库记录绑定对象指针返回操作成功返回0举例virtual long _cdecl NextRecordset ()说明下一记录集参数返回操作成功返回0举例virtual bool _cdecl GetFieldValue ()说明获取记录集的数据参数LPCTSTR lpFieldName 字段名称X &

48、 bValue 字段数据值返回操作成功返回true举例virtual void _cdecl SetSPName(LPCTSTR pszSpName)说明获取存储过程名称参数LPCTSTR pszSpName 存储过程名称返回举例virtual void _cdecl AddParamter(LPCTSTR pszName, ADOCG:ParameterDirectionEnum Direction, ADOCG:DataTypeEnum Type, long lSize, _variant_t & vtValue)说明添加参数参数LPCTSTR pszName 字段名称ADOCG:Para

49、meterDirectionEnum Direction 参数输入输出方向标记ADOCG:DataTypeEnum Type 参数类型long lSize 参数大小_variant_t & vtValue 参数值返回举例virtual void _cdecl ClearAllParameters()说明清除参数参数返回举例virtual void _cdecl GetParameterValue(LPCTSTR pszParamName, _variant_t & vtValue)说明获取参数值参数LPCTSTR pszParamName 参数名称_variant_t & vtValue 参数

50、返回值返回举例virtual long _cdecl GetReturnValue()说明获取数据库返回值参数返回举例virtual bool _cdecl Execute(LPCTSTR pszCommand)说明执行语句参数LPCTSTR pszCommand SQL语句返回操作成功返回ture,否则为false举例virtual bool _cdecl ExecuteCommand(bool bRecordset)说明执行命令参数bool bRecordset 是否返回记录集返回操作成功返回ture,否则为false举例LPCTSTR GetComErrorDescribe(CComEr

51、ror & ComError)说明获取错误描述参数CComError & ComError 错误对象返回操作成功返回文本举例void SetErrorInfo(enADOErrorType enErrorType, LPCTSTR pszDescribe)说明设置错误参数enADOErrorType enErrorType 错误类型 LPCTSTR pszDescribe 错误描述返回举例CDataBaseEngine数据库引擎类模块Database继承CDataBaseEngine IDataBaseEngine IUnknownEx实现IDataBaseEngine数据成员名称说明bool

52、m_bService; CQueueServicem_RequestQueueService; IDataBaseSink*m_pIDataBaseSink;运行标志队列对象通知钩子方法virtual bool _cdecl StartService(BYTE cbThreadCount)说明启动服务参数BYTE cbThreadCount 数据库线程数量返回操作成功返回ture,否则false举例virtual bool _cdecl StopService()说明停止服务参数返回操作成功返回ture,否则false举例virtual bool _cdecl SetDataBaseSink(

53、IUnknownEx * pIUnknownEx)说明设置数据事件操作处理钩子参数IUnknownEx * pIUnknownEx 钩子指针返回操作成功返回ture,否则false 举例virtual void * _cdecl GetQueueService(const IID & Guid, DWORD dwQueryVer)说明获取接口参数onst IID & Guid 接口标记DWORD dwQueryVer 查询版本返回操作成功返回内存指针,否则Null举例virtual void _cdecl OnQueueServiceSink(BYTE cbThreadIndex,WORD w

54、Identifier, void * pBuffer, WORD wDataSize, DWORD dwInsertTime)说明实现队列钩子接口的函数参数BYTE cbThreadIndex 线程索引WORD wIdentifier 事件数据标记void * pBuffer 数据指针WORD wDataSize 数据大小DWORD dwInsertTime 加入时间返回举例l 类继承图数据库错误接口IADOErrorADO 错误类CADOError数据库连接接口IDataBase数据库对象CADOError数据库引擎接口IDataBaseEngine数据队列类钩子接口IQueueServiceSink数据库管理类CDataBaseEngine3.3.3 运行流程数据库管理类CD

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!