在线文档教程
Erlang 20

corba

CORBA

模块

CORBA

模块摘要

CORBA模块级的功能

描述

该模块包含在CORBA模块级别上指定的功能。它还包含一些创建和处理对象的功能。

输出

create(Module, TypeID) -> Objectcreate(Module, TypeID, Env) -> Objectcreate(Module, TypeID, Env, Optons1) -> Objectcreate_link(Module, TypeID) -> Objectcreate_link(Module, TypeID, Env) -> Objectcreate_link(Module, TypeID, Env, Options2) -> Reply

类型

这些函数启动一个新的服务器对象。如果您在没有RegName的情况下启动它,则只能通过返回的对象键访问它。以RegName开头,名称在本地或全局注册。

TypeID是服务器对象类型的存储库ID,例如看起来像“IDL:StackModule / Stack:1.0”。

模块是接口API模块的名称。

Env是传递给实现init回调函数的参数。

以create / 2,create / 3或create / 4开头的服务器不关心父项,这意味着父项不在通用处理部分中明确处理。

以create_link2,create_link / 3或create_link / 4开头的服务器最初链接到调用者父级,并且只要父级进程终止,并且与父级进程具有相同的原因,它就会终止。如果服务器陷阱退出,则会调用terminate / 2回调函数,以便在终止之前进行清理。如果服务器是监督树中的工作人员,则应使用这些功能。

如果使用选项{sup_child,true},则create_link / 4将返回{ok,Pid,#objref},否则返回#objref,并且可以启动服务器作为管理员子级(stdlib-1.7或更高版本)。

如果您使用该选项{persistent, true},则还必须使用该选项{regname, {global, Name}}。通过这种组合可以区分永久终止服务器或重新启动过程中的服务器。

选择{pseudo, true},允许我们创建一个不是服务器的对象。使用{pseudo, true}重写所有其他开始选项。有关更多信息,请参见Module_Interface...

如果使用该选项启动服务器,则{persistent, true}不会删除对象密钥,除非它以正常原因或关闭结束。因此,如果持久服务器被用作supervisor子项,它们应该是暂时的,并且应该修改objectkeys_gc_time(默认等于infinity)。

选择{local_typecheck, boolean()},它覆盖Local Typechecking环境标志,打开或关闭打字。如果激活,将检查参数、响应和引发的异常,以确保在同一个Orber域中调用CORBA对象上的操作时数据是正确的。由于额外的开销,此选项只可能用于测试和开发。

Example: corba:create('StackModule_Stack', "IDL:StackModule/Stack:1.0", {10, test})

dispose(Object) -> ok

类型

此函数用于终止服务器对象的执行。对零对象引用调用此操作,例如,corba:create_nil_objref/0永远都会回来的。对于有效的对象引用,多次调用此操作将导致系统异常。

create_nil_objref() -> Object

类型

创建表示零值的对象引用。尝试使用返回的对象引用调用操作将返回系统异常。

create_subobject_key(Object, Key) -> Result

类型

该函数用于在服务器对象中创建子对象。例如,当需要对mnesia或ETS表中的单独行进行唯一访问时,它可能很有用。该结果是一个对象的引用将被视为一个独特的参考外面的世界,但将访问同一台服务器对象,其中一个可以使用get_subobject_key / 1函数来获取私钥值。

密钥存储在对象引用对象中。如果它是二进制文件,它将按原样存储,否则在存储之前将其转换为二进制文件。

get_subobject_key(Object) -> Result

类型

该函数用于从对象引用对象中获取子对象键。结果总是一个二进制文件,如果它是一个与create_subobject_key / 2一起存储的Erlang术语,则可以执行binary_to_term / 1来获取实际值。

get_pid(Object) -> Result

类型

这个函数是从一个对象中获取进程ID,当CORBA对象在主管树中启动/处理时这是必须的。如果找不到密钥或发生其他错误,该函数将抛出异常。

raise(Exception)

类型

这个函数用于将corba异常提升为Erlang用户生成的退出信号。它会抛出元组{'EXCEPTION',异常}

reply(To, Reply) -> true

类型

CORBA对象可以使用此函数将响应显式发送给调用双向操作的客户端。如果使用此操作,是不是可能返回回调模块中的答复。

一定是参数提供给回调函数,这要求IC选项在编译IDL-文件时使用。

resolve_initial_references(ObjectId) -> Objectresolve_initial_references(ObjectId, Contexts) -> Object

类型

该函数返回与给定对象ID关联的对象引用。最初,只有"NameService"可用。要添加或删除服务,请使用add_initial_service/2remove_initial_service/1

配置方面,用于覆盖全局SSL客户端configuration

add_initial_service(ObjectId, Object) -> boolean()

类型

此操作允许我们添加初始服务,可以使用resolve_initial_references / 1或corbaloc模式访问这些服务。 如果使用由OMG定义的Id,那么给定的对象必须是正确的类型; 欲了解更多信息,请参阅互操作命名服务。 如果给定的ID已经存在,则返回false。

remove_initial_service(ObjectId) -> boolean()

类型

如果我们不希望某个服务可以访问,调用此函数将删除关联。 如果能够终止绑定,则返回true。 如果不存在这样的绑定,则返回false。

list_initial_services() -> [ObjectId]

类型

这个函数返回一个允许的对象ID列表。

resolve_initial_references_remote(ObjectId, Address) -> Objectresolve_initial_references_remote(ObjectId, Address, Contexts) -> Object

类型

这个函数返回被请求的对象id的对象引用。 远程修饰符字符串具有以下格式:“iiop://”<host>“:”<port>其中<host> = <DNS主机名> | <IPv4地址> | “[”<IPv6地址>“]”。

配置方面,用于覆盖全局SSL客户端configuration

警告

大多数ORB不支持此操作。因此,请改用corba:string_to_object/1

list_initial_services_remote(Address) -> [ObjectId]list_initial_services_remote(Address, Contexts) -> [ObjectId]

类型

这个函数返回一个允许的对象ID列表。远程修饰符字符串具有以下格式:"iiop://"<host>":"<port>其中<host> = <DNS hostname> | <IPv4 address> | "["<IPv6 address>"]"。

配置方面,用于覆盖全局SSL客户端configuration

警告

大多数ORB不支持此操作。因此,请避免使用它。

object_to_string(Object) -> IOR_string

类型

该函数返回对象引用作为IOR的外部字符串表示。

string_to_object(IOR_string) -> Objectstring_to_object(IOR_string, Contexts) -> Object

类型

这个函数有一个corbanamecorbaloc或在外部的字符串表示一个IOR并返回对象引用。

要查找NameService引用,只需使用 "corbaloc:iiop:1.2@123.0.0.12:4001/NameService"

我们也可以通过使用来解析NameService中的一个对象 "corbaname:iiop:1.2@123.0.0.12:4001/NameService#org/Erlang/MyObj"

要使用IPv6地址查找NameService引用,只需使用 "corbaloc:iiop:1.2@[FEC1:0:3:0:0312:44AF:FAB1:3D01]:4001/NameService"

有关corbaname和corbaloc的更多信息,请参阅用户指南(可互操作的命名服务)。

配置方面,用于覆盖全局SSL客户端configuration

用户指南中进一步介绍了如何处理接口上下文。

print_object(Data [, Type]) -> ok | {'EXCEPTION', E} | {'EXIT', R} | string()

类型

由提供的数据表示的对象被解剖并以更易读的形式呈现。 Type参数是可选的; 如果未提供,则使用标准输出。 对于error_report和info_msg,使用error_logger模块,有或没有Reason或Comment。 如果提供原子字符串,则此函数将返回一个平面列表。 IoDevice被传递给操作io:format / 2。

如果提供的对象是本地引用,则输出等同于从调用此函数的节点导出的对象。

add_alternate_iiop_address(Object, Host, Port) -> NewObject | {'EXCEPTION', E}

类型

此操作将创建包含ALTERNATE_IIOP_ADDRESS组件的提供对象的新实例。只有新实例包含新组件。当此对象传递给另一个支持ALTERNATE_IIOP_ADDRESS的ORB时,如果不可能与主地址通信,请求将被路由到备用地址。

ALTERNATE_IIOP_ADDRESS组件要求使用IIOP-1.2。因此,确保Orber和其他ORB都正确配置。

确保Object可以通过备用主机/端口访问给定的内容。例如,如果对象正确启动为localpseudo,则该对象应该在多节点Orber安装中的所有节点上可用。由于其他对象类型只有一个实例存在,因此如果它启动的节点终止,将无法访问它。

orb_init(KeyValueList) -> ok | {'EXIT', Reason}

类型

这个函数允许用户在Orlang中配置Orber,例如Erlang shell。Orber可能被之前调用此操作。有关更多信息,请参阅configuration settings用户指南。