Module_Interface
Module_Interface
模块
Module_Interface
模块摘要
Orber生成存根/骨架。
描述
该模块包含由IC生成的存根/骨架函数。
启动Orber服务器可以通过三种方式完成:
- 正常 - 当服务器死亡时,Orber忘记了服务器的所有知识。
- 主管子系统-添加配置参数
{sup_child, true}
的oe_create_link/2
函数返回{ok, Pid, ObjRef}
可以通过应用程序进行处理主管/ STDLIB-1.7
或更高版本。
- 持久对象引用 - 添加配置参数
{persistent, true}
和{regname, {global, term()}}
Orber将记住对象引用,直到服务器以reasonnormal
或shutdown结束
。因此,如果服务器作为临时
主管子系统启动,那么当它发生崩溃并且正在重新启动时,我们不会收到“OBJECT_NOT_EXIST”异常。
Orber存根可以用来启动一个pseudo object
,它将创建一个非服务器实现。伪对象引入了一些限制:
- 这些功能
oe_create_link/2
相当于oe_create/2
,即没有链接可以或将不会创建。
- 该
BIF:s self()
和process_flag(trap_exit,true)
的行为不正确。
- 该
IC
选项{{impl, "M::I"}, "other_impl"}
不起作用。回调函数必须在一个名为的文件中实现M_I_impl.erl
- 该
IC
选项from
不起作用。
- 回调函数必须像使用该
IC
选项一样执行{this, "M::I"}
。
- 服务器
State
更改不起作用。用户可以通过Env
start参数提供信息,而返回的状态init/2
将是在以下调用中传递的状态。
- 如果回调函数回复
Timeout
参数集,则不起作用。
- 定义为
oneway
阻止操作直到操作回复。
- 该选项将
{pseudo, true}
覆盖所有其他启动选项。
- 必须执行除自定义之外的函数
init/2
(通过oe_create * / 2terminate/2
调用)和(通过corba:dispose / 1调用)。
通过采用上述pseudo
对象的规则,我们可以使用oe_create/2
创建server
或pseudo
对象,通过排除或包含选项{pseudo, true}
,而无需更改回调模块。
如果你启动一个没有{regname, RegName}
的对象,则只能通过返回的对象键来访问它。一个{regname, RegName}
名字开始在本地或全球注册。
警告
为了避免使用旧对象引用洪泛Orber,请使用标志-orber objectkeys_gc_time Time
来启动erlang ,该时间
将删除与服务器在Time秒内死亡有关的所有对象引用。为了避免额外的开销,即在没有持久对象启动时执行垃圾收集,objectkeys_gc_time默认值为无穷大
。有关更多信息,请参阅orber和corba文档。
输出
Module_Interface:typeID() -> TypeId
类型
返回与这个存根/骨架相关的类型ID
Module_Interface:oe_create() -> ObjRef
类型
启动Orber服务器。
Module_Interface:oe_create_link() -> ObjRef
类型
启动链接的Orber服务器。
Module_Interface:oe_create(Env) -> ObjRef
类型
启动将Env传递给的Orber服务器init/1
。
Module_Interface:oe_create_link(Env) -> ObjRef
类型
启动链接的Orber服务器,将Env传递给init/1
...
Module_Interface:oe_create(Env, Options) -> ObjRef
类型
启动Orber服务器,将Env传递给init/1
...
如果使用该选项{pseudo, true}
,则覆盖所有其他选项。默认情况下,该选项设置为false。
此函数不能用于作为主管子服务器启动服务器。如果开始于persistent
,选择[{persistent, true}, {regname, {global, term()}}]
必须使用,并且Orber只有在对象引用终止时才会忘记它。正常
或停工
...
重写Local Typechecking环境标志的选项{local_typecheck,boolean()}打开或关闭类型检查。 如果激活了参数,回复和引发的异常,将在同一Orber域内的CORBA对象上调用操作时检查数据是否正确。 由于额外的开销,这个选项只能在测试和开发过程中使用。
{survive_exit, boolean()}
覆盖EXIT Tolerance
环境标志。如果激活,即使回叫模块返回EXIT,服务器也不会终止。
Time
指定允许服务器花费初始化的时间(以毫秒为单位)。有关这些Dbg
选项的更多信息,请参阅sys
模块。
Module_Interface:oe_create_link(Env, Options) -> Return
类型
启动链接的Orber服务器,将Env传递给init/1
...
如果使用该选项{pseudo, true}
,则会覆盖所有其他选项,并且不会创建链接。默认情况下,该选项设置为false。
此功能可用于启动服务器作为持久性或主管孩子。目前[{persistent, true}, {regname, {global, term()}}]
必须用来启动一个服务器作为永久性的,也就是说,如果服务器死了,并且正在重新启动,那么对服务器的调用不会引发'OBJECT_NOT_EXIST'
异常。如果Orber以合理的正常
或关闭状态
终止,Orber将只会忘记对象引用,因此,服务器必须以瞬态
方式启动(有关更多信息,请参阅主管文档)。
选项{local_typecheck,boolean()}和{survive_exit,boolean()}的行为方式与oe_create / 2相同。
Time
指定允许服务器花费初始化的时间(以毫秒为单位)。有关这些Dbg
选项的更多信息,请参阅sys
模块。
Module_Interface:own_functions(ObjRef, Arg1, ..., ArgN) -> ReplyModule_Interface:own_functions(ObjRef, Options, Arg1, ..., ArgN) -> Reply
类型
该Timeout
选项的默认值是infinity
。IPv4或IPv6地址被接受为本地接口。
在配置
方面,用于覆盖全局SSL客户端configuration
。
要访问#'IOP_ServiceContext'{}
记录和?ORBER_GENERIC_CTX_ID
宏,您必须添加-include_lib("orber/include/corba.hrl").
到您的模块。
回调函数
以下函数应该从CORBA
回调模块中导出。请注意,通过使用IC选项编译IDL文件,可以自动生成回调模块的完整模板{be,erl_template}
。还应该添加相同的编译选项,例如,this
或from
在生成存根/骨架模块时使用。
输出
Module_Interface_impl:init(Env) -> CallReply
类型
每当新服务器启动时,INIT/1
是在指定的回调模块中调用的第一个函数。
Module_Interface_impl:terminate(Reason, State) -> ok
类型
每当服务器即将终止时,都会调用此回调函数。
Module_Interface_impl:code_change(OldVsn, State, Extra) -> CallReply
类型
更新内部State
。
Module_Interface_impl:handle_info(Info, State) -> CallReply
类型
如果将配置参数{{handle_info,“Module :: Interface”},true}
传递给IC,并且在init()
回调中设置了process_flag(trap_exit,true),
则必须导出此函数。
注
为了能够在回调模块的CallReply中处理Timeout选项,必须将配置参数{{handle_info,“Module :: Interface”},true}传递给IC。
Module_Interface_impl:own_functions(State, Arg1, ..., ArgN) -> CallReplyModule_Interface_impl:own_functions(This, State, Arg1, ..., ArgN) -> CallReplyModule_Interface_impl:own_functions(This, From, State, Arg1, ..., ArgN) -> ExtCallReplyModule_Interface_impl:own_functions(From, State, Arg1, ..., ArgN) -> ExtCallReply
类型
所有双向函数都必须返回列出的答复之一或提出IDL代码中列出的任何例外(即提出(...))。如果IC编译选项本
和/或从
使用,实现必须接受这
和/或从
参数。
Module_Interface_impl:own_functions(State, Arg1, ..., ArgN) -> CastReplyModule_Interface_impl:own_functions(This, State, Arg1, ..., ArgN) -> CastReply
类型
所有单向函数都必须返回列出的答复之一。如果IC编译选项this
被使用,实现必须接受this
参数。