非常教程

Erlang 20参考手册

orber

orber

模块

orber

模块摘要

Orber应用程序的主要模块

描述

该模块包含启动和停止应用程序的功能。它还具有一些实用函数,可以从运行的应用程序中获取一些配置信息。

输出

start() -> okstart(Type) -> ok

类型

启动Orber应用程序(如果它未运行,它也启动mnesia)。提供哪个Type参数决定了行为。如果没有提供Orber开始为temporary。有关更多信息,请参阅参考手册应用程序(3)

jump_start(Attributes) -> ok | {'EXIT', Reason}

类型

使用配置参数安装并启动Orber和Mnesia应用程序,domain并分别iiop_port设置为"IP-number:Port"和提供的端口。在大多数情况下,这些设置足以确保不会与任何其他Orber实例发生冲突。如果此操作失败,请检查侦听端口(iiop_port)是否已被使用。该功能只能在开发和测试过程中使用; 在使用此操作时如何配置Orber可能会在任何时候更改,恕不另行通知。

stop() -> ok

停止Orber应用程序。

info() -> okinfo(IoType) -> ok | {'EXIT', Reason} | string()

类型

生成一个信息报告,其中包含Orber的配置设置。如果否IoTypeinfo_msg则使用(请参阅error_logger文档)。当提供原子字符串时,该函数将返回一个扁平列表。为io{io, IoDevice}io:format/1io:format/3分别使用。

exception_info(Exception) -> {ok, string()} | {error, Reason}

返回可打印字符串,该字符串更详细地描述所提供的异常。注意,此函数主要用于系统异常。

is_system_exception(Exception) -> true | false

如果提供的异常是系统定义的异常,则返回true,否则返回false。

get_tables() -> [Tables]

返回特定于Orber的Mnesia表的列表。如果已分区,则需要此列表来恢复Mnesia。

get_ORBInitRef() -> string() | undefined

如果我们将在本地解析引用,则此函数返回undefined,否则,如果给定corba:resolve_initial_references/1的Key与此配置变量中的Key相匹配,则描述我们将联系哪个主机的字符串。有关更多信息,请参阅用户指南。

get_ORBDefaultInitRef() -> string() | undefined

如果我们将在本地解析引用,那么这个函数返回undefined,否则返回描述哪个或哪些主机的字符串,我们将从中解析给出的Key corba:resolve_initial_references/1。有关更多信息,请参阅用户指南。

domain() -> string()

此函数以字符串形式返回当前Orber域的域名。

iiop_port() -> int()

该函数返回由IIOP协议使用的端口号。它可以通过设置应用程序变量iiop_port进行配置,如果未设置,它将具有默认编号4001。

iiop_out_ports() -> 0 | {Min, Max}

此操作的返回值是配置参数iiop_out_ports已设置的值。

iiop_out_ports_random() -> true | false

返回配置参数的值iiop_out_ports_random

iiop_out_ports_attempts() -> int()

返回配置参数的值iiop_out_ports_attempts

iiop_ssl_port() -> int()

该函数返回由安全IIOP协议使用的端口号。它可以通过设置应用程序变量iiop_ssl_port进行配置,如果未设置,它将具有默认的编号4002,如果Orber要配置为以安全模式运行。否则它返回-1。

iiop_timeout() -> int() (milliseconds)

此函数返回传出IIOP请求终止之后的超时值。它可以通过设置应用程序变量iiop_timeout TimeVal(seconds)进行配置,如果未设置,它将具有默认值infinity。如果请求超时,则引发系统异常,例如TIMEOUT

注意:iiop_timeout配置参数(TimeVal)的范围可能只在0到1000000秒之间。否则,使用默认值。

注意:早期的IC版本要求编译选项。{timeout,"module::interface"},允许用户添加额外的超时参数,例如,module_interface:function(ObjRef, Timeout, ... Arguments ...)module_interface:function(ObjRef, [{timeout, Timeout}], ... Arguments ...),而不是module_interface:function(ObjRef, ... Arguments ...)不再是这种情况,如果使用额外的超时,参数将覆盖配置参数。iiop_timeout然而,它是不可能使用的。infinity若要重写超时参数,请执行以下操作。超时值选项对于驻留在同一Orber域中的对象也是有效的。

iiop_connection_timeout() -> int() (milliseconds)

此函数返回超时值,在此之后,传出的IIOP连接终止。它可以通过设置应用程序变量iiop_connection_timeout TimeVal(seconds)进行配置,如果未设置,它将具有默认值infinity。如果有未决请求,连接将不会终止。

注意:iiop_connection_timeout配置参数(TimeVal)的范围可能只有0到1000000秒。否则,使用默认值。

iiop_connections() -> Resultiiop_connections(Direction) -> Result

类型

此操作返回的列表包含Orber当前连接的远程主机/端口的元组。如果没有提供方向,则包括传入和传出连接。

如果为连接定义了一个特定的本地接口,它将被添加到返回的元组中。

iiop_connections_pending() -> Result

类型

在某些情况下,连接尝试(即尝试与另一个ORB进行通信)可能会因多种原因而阻塞。该操作允许用户检查是否是这种情况。返回的列表包含远程主机/端口的元组。通常情况下,列表是空的。

如果已经为连接定义了特定的本地接口,这将添加到返回的元组中。

iiop_in_connection_timeout() -> int() (milliseconds)

此函数返回超时值,在此之后传入的IIOP连接终止。它可以通过设置应用程序变量iiop_in_connection_timeout TimeVal(seconds)进行配置,如果未设置,它将具有默认值infinity。如果有未决请求,连接将不会终止。

注意:iiop_in_connection_timeout配置参数(TimeVal)的范围可能只有0到1000000秒。否则,使用默认值。

iiop_acl() -> Result

类型

返回ACL配置。在Filter使用无类别域间路由(CIDR)的扩展格式。例如,"123.123.123.10"限制与特定主机的连接,同时"123.123.123.10/17"允许任何主机的连接等于17个最高有效位。Orber还允许用户指定某个端口或端口范围,例如,"123.123.123.10/17#4001""123.123.123.10/17#4001/5001"分别。IPv4或没有压缩的IPv6字符串被接受。

InterfacesIPv4或IPv6字符串的列表当前仅用于传出连接,并且可能只包含一个地址。如果授予设置和访问权限,Orber将在连接到另一个ORB时使用该本地接口。该模块orber_acl提供了评估过滤器和地址访问控制的操作。

activate_audit_trail() -> Resultactivate_audit_trail(Verbosity) -> Result

类型

为所有现有的传入和传出IIOP连接激活审计/跟踪。的Verbosity参数,stealthnormalverbose,确定哪个内置的拦截器被使用(orber_iiop_tracer_stealthorber_iiop_tracer_silentorber_iiop_tracer分别地)。如果没有提供详细级别,那么normal将被使用。

如果Orber被配置为使用其他拦截器,审计/踪迹拦截器将被简单地添加到该列表中。

deactivate_audit_trail() -> Result

类型

关闭所有现有的传入和传出IIOP连接的审计/跟踪。如果Orber被配置为使用其他拦截器,则仍将使用这些拦截器。

add_listen_interface(IP, Type) -> Resultadd_listen_interface(IP, Type, Port) -> Resultadd_listen_interface(IP, Type, ConfigurationParameters) -> Result

类型

创建一个新的进程,处理通过给定接口和端口创建新的传入IIOP连接的请求。如果排除后者,Orber将使用iiop_portiiop_ssl_port配置参数的值。该Type参数确定它是否应该通过SSL进行IIOP或IIOP。如果成功,返回的信息#Reforber:remove_listen_interface/1在连接终止时传递。

也可以提供覆盖全局配置的配置参数。该iiop_in_connection_timeoutiiop_max_fragmentsiiop_max_in_requests拦截器参数只是覆盖了全球同行(请参阅Configuration用户手册中的章节)。但对于以下参数有一些限制:

  • 标志 - 目前只能覆盖Use Current Interface in IORExclude CodeSet Component标志的全局设置。
  • ip_family - 可以设置为inetinet6用于获取使用另一个IP版本的监听接口,而不是在启动时使用具有标志的默认设置。
  • iiop_port -需要Use Current Interface in IOR被激活,并且所提供的Typenormal。如果是这样,导出的IOR将包含由此配置参数定义的IIOP端口。否则,将使用全局设置。
  • iiop_ssl_port - 几乎等同于iiop_port。区别在于Type应该是ssl,并且导出的IOR:s将包含通过此配置参数定义的SSL端口的IIOP。

如果不能根据提供的接口和端口添加侦听器,则错误消息是在inet和/或ssl文档中描述的错误消息之一。

remove_listen_interface(Ref) -> ok

类型

终止与提供#Ref的传入连接相关的监听过程。Ref参数是操作的返回值orber:add_listen_interface/2/3。在终止连接时,所有关联的请求都不会向客户端发送回复。

close_connection(Connection) -> Resultclose_connection(Connection, Interface) -> Result

类型

将尝试关闭提供的对象引用或给定主机/端口列表中找到的主机/端口组合的所有传出连接。如果#'IOP_ServiceContext'{}在与远程对象进行通信时使用了包含本地接口的接口(另请参见Module_Interface),则该接口应作为第二个参数传递。否则,通过默认本地接口的连接将被终止。

由于多个客户端可能通过相同的连接进行通信,因此调用此操作时会受到影响。其他客户端可以通过调用目标对象上的操作来重新创建连接。

secure() -> no | ssl

此函数返回Orber运行的安全模式,如果它是不安全的域或所使用的安全机制的类型,则该值为“否”。目前唯一的安全机制是SSL。这是通过设置应用程序变量配置安全的

ssl_server_options() -> list()

该函数返回为Orber域设置为服务器的SSL选项列表。这是通过设置应用程序变量ssl_server_options进行配置的。

ssl_client_options() -> list()

此函数返回当前进程中用于传出呼叫的SSL选项列表。默认值是通过设置应用程序变量ssl_client_options进行配置的。

set_ssl_client_options(Options) -> ok

类型

此函数以SSL选项列表作为参数,并为当前进程设置它。

objectkeys_gc_time() -> int() (seconds)

该函数返回超时值,之后{persistent, true}将删除与配置参数启动的服务器相关的已终止对象密钥。它可以通过设置应用程序变量objectkeys_gc_time TimeVal(seconds)进行配置,如果未设置,它将具有默认值infinity

自动移除以原因正常关闭结束的对象。

注意:objectkeys_gc_time配置参数(TimeVal)的范围可能只有0到1000000秒。否则,使用默认值。

orber_nodes() -> RetVal

类型

此函数返回此orber域所包含的节点名称列表。

install(NodeList) -> okinstall(NodeList, Options) -> ok

类型

该函数安装所有必要的mnesia表,并在其中的一些中加载默认数据。如果一个或多个Orber表已经存在,则安装失败。如果安全的话,可以使用函数卸载,即没有其他应用程序正在运行Orber。

先决条件:

  • 安装前必须存在mnesia架构。
  • 如果新安装应该是多节点域,则mnesia将在其他节点上运行。

如果该功能尚未在安装节点上运行,并且如果它已启动,则Mnesia将在此后停止。

可以发送到安装程序的选项是:

  • {install_timeout, Timeout} - 这个超时是我们等待创建表格的时间。超时值可以是无限的或以毫秒为单位的整数。默认是无限。
  • {ifr_storage_type, TableType} - 该选项设置用于接口存储库的表的类型。TableType可以是disc_copies或ram_copies。默认是disc_copies。
  • {initialreferences_storage_type, TableType} - 此选项设置用于存储初始引用的表的类型。TableType可以是disc_copies或ram_copies。默认是ram_copies。
  • {nameservice_storage_type, TableType} - Orber的默认行为是将NameService安装为ram_copies。该选项可以将其更改为disc_copies。但用户应该知道,如果节点重新启动,则存储在NameService中的所有本地对象引用无效。因此,您不能切换到disc_copies,并期望与以前完全相同的行为。
  • {load_order, Priority} - 默认情况下,优先级设置为0.使用此选项将改变Mnesia将加载Orber内部表的顺序的优先级。有关更多信息,请参阅Mnesia文档。

uninstall() -> ok

该功能停止Orber应用程序,终止所有服务器对象并删除所有Orber相关的mnesia表。

注意:由于其他应用程序可能使用mnesia在同一节点上运行,卸载不会停止mnesia应用程序。

add_node(Node, Options) -> RetVal

类型

该功能将给定节点添加到现有的Orber节点组,并在新节点上启动Orber。orber:add_node由Orber节点组中的成员调用。

新节点的先决条件:

  • Erlang使用该选项在新节点上启动-mnesia extra_db_nodes,例如,erl -sname new_node_name -mnesia extra_db_nodes ConnectToNodes_List
  • 新节点的domain名称与我们想要连接的节点相同。
  • Mnesia正在新节点上运行(没有新的模式创建)。
  • 如果新节点将使用disc_copies架构类型,则必须使用以下方法进行更改:mnesia:change_table_copy_type(schema, node(), disc_copies).

Orber将由新节点上的功能启动。

如果:

  • Orber已经安装在给定的节点上。
  • Mnesia没有像上面介绍的那样在新节点上启动。
  • 不可能将Mnesia表中的数据复制到新节点。
  • 无法在新节点上启动Orber,例如,由于iiop_port已在使用中。

该功能在故障发生后不会移除已复制的表格。使用orber:remove_node删除这些表。

remove_node(Node) -> RetVal

类型

该功能从Orber节点组中删除给定的节点。Mnesia应用程序不会停止。

configure(Key, Value) -> ok | {'EXIT', Reason}

类型

这个函数允许用户在Orlang中配置Orber,例如Erlang shell。可以随时调用configure上面指定的密钥。

在安装和启动Orber之前,必须设置其他任何键。

试图改变以任何其他方式的构造容许,因为它可能会影响Orber的行为。

有关允许值的更多信息,请参阅configuration settings用户指南。

注意

配置IIOP超时值不会影响已有的连接。如果你想保证一致的行为,你必须从一开始就设置这些参数。

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1