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/2
或remove_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
类型
这个函数有一个corbaname
,corbaloc
或在外部的字符串表示一个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
可以通过备用主机/端口访问给定的内容。例如,如果对象正确启动为local
或pseudo
,则该对象应该在多节点Orber安装中的所有节点上可用。由于其他对象类型只有一个实例存在,因此如果它启动的节点终止,将无法访问它。
orb_init(KeyValueList) -> ok | {'EXIT', Reason}
类型
这个函数允许用户在Orlang中配置Orber,例如Erlang shell。Orber可能不
被之前调用此操作。有关更多信息,请参阅configuration settings
用户指南。