精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
在调用了所有模块的Register角色之后,服务器接着调用各个模块的Initialize角色,如果这些模块注册了该角色的话。模块通过Initialize角色来初始化全局的和私有的数据结构。
服务器会向每个模块的Initialize角色传入一些对象,这些对象可以用于获取服务器的全局属性,预置信息,以及文本错误信息。服务器还会传入错误记录流的引用,可以用于书写错误纪录。所有这些对象都是全局的,因此在这个服务器的运行期间是有效的,任何时候都可以进行访问。
在调用Initialize角色时,模块会接收到一个QTSS_Initialize_Params结构,其定义如下:
typedef struct { QTSS_ServerObject inServer; QTSS_PrefsObject inPrefs; QTSS_TextMessagesObjectinMessages; QTSS_ErrorLogStream inErrorLogStream; QTSS_ModuleObject inModule; } QTSS_Initialize_Params;
inServer
这是一个A QTSS_ServerObject对象,包含服务器的全局属性,以及一个含有当前运行的服务器的所有模块信息的属性。如果需要每个属性的描述,请参见“qtssServerObjectType”部分。
inPrefs
这是一个QTSS_PrefsObject对象,包含服务器的预置信息。如果需要每个属性的描述,请参见“qtssPrefsObjectType”部分。
inMessages
这是一个QTSS_TextMessagesObject对象,模块可以用这个对象来提供本地化文本字符串。请参见“qtssTextMessageObjectType”部分。
inErrorLogStream
这是一个QTSS_ErrorLogStream流的引用,模块可以用这个引用来输出服务器的错误纪录。往这个流输出数据将导致相应模块的Error Log角色被调用。
inModule
这是一个QTSS_ModuleObject对象,模块可以用它来存储自身的信息,包括模块的名称,版本号,以及模块功能描述。请参见“qttsModuleObjectType”部分。
希望自己的Initialize角色被调用的模块,必须在其Register角色中调用QTSS_AddRole函数,并将角色的实参指定为QTSS_Initialize_Role常数。
如果模块的Initialize角色的返回值不为QTSS_NoErr,则不会被装载到服务器中。