在线文档教程
Erlang 20

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将记住对象引用,直到服务器以reason normalshutdown结束。因此,如果服务器作为临时主管子系统启动,那么当它发生崩溃并且正在重新启动时,我们不会收到“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更改不起作用。用户可以通过Envstart参数提供信息,而返回的状态init/2将是在以下调用中传递的状态。

  • 如果回调函数回复Timeout参数集,则不起作用。

  • 定义为oneway阻止操作直到操作回复。

  • 该选项将{pseudo, true}覆盖所有其他启动选项。

  • 必须执行除自定义之外的函数init/2(通过oe_create * / 2 terminate/2调用)和(通过corba:dispose / 1调用)。

通过采用上述pseudo对象的规则,我们可以使用oe_create/2创建serverpseudo对象,通过排除或包含选项{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}。还应该添加相同的编译选项,例如,thisfrom在生成存根/骨架模块时使用。

输出

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参数。