在线文档教程
Erlang 20

supervisor_bridge

supervisor_bridge

模块

supervisor_bridge

模块摘要

通用主管桥接行为。

描述

此行为模块提供了一个监督桥,一个将未按照OTP设计原则设计的子系统连接到监督树的过程。主管桥位于主管和子系统之间。它对自己的主管来说就像一个真正的主管,但是与子系统的真正主管有不同的接口。有关更多信息,请参阅Supervisor BehaviourOTP设计原则。

监督桥假定用于启动和停止子系统的功能位于导出预定义函数集的回调模块中。

sys(3)模块可用于调试管理桥。

除非另有说明,否则如果指定的管理桥不存在或者指定了错误参数,则此模块中的所有功能都会失败。

出口

start_link(Module, Args) -> Result

start_link(SupBridgeName, Module, Args) -> Result

类型

创建一个监督桥接进程,链接到调用进程,该进程调用Module:init/1启动子系统。为确保同步启动过程,此功能在返回之前不会Module:init/1返回。

  • 如果SupBridgeName={local,Name},主管桥在本地注册为Name使用register/2

  • 如果SupBridgeName={global,Name},主管桥在全球范围内注册为Name使用global:register_name/2

  • 如果SupBridgeName={via,Module,Name},主管桥被注册为Name使用由模块表示的注册表。Module回调是导出功能register_name/2unregister_name/1send/2,这是表现得像在相应的功能global。因此,{via,global,GlobalName}是一个有效的参考。如果没有提供名称,主管桥没有注册。Module是回调模块的名称。Args是一个作为参数传递给的任意术语Module:init/1

  • 如果监督者桥和子系统成功启动,则函数返回{ok,Pid},其中Pid是监督者桥的pid。

  • 如果已经存在具有指定的进程SupBridgeName,则函数返回{error,{already_started,Pid}},当Pid该进程的pid 。

  • 如果Module:init/1返回ignore,则此函数ignore也会返回,并且监督者桥接器将以原因终止normal

  • 如果Module:init/1失败或者返回一个错误元组或者一个不正确的值,这个函数返回{error,Errorr},其中Error是一个包含错误信息的术语,并且监督者网桥因为理由而终止Error

回调函数

以下函数必须从supervisor_bridge回调模块中导出。

出口

Module:init(Args) -> Result

类型

无论何时开始使用监督桥start_link/2,3,新功能都会调用该功能来启动子系统并进行初始化。

ArgsArgs提供给启动函数的参数。

函数返回{ok,Pid,State}Pid子系统中主进程的pid 在哪里,并且State是任何项。

如果稍后Pid以理由终止Reason,则主管桥也将以理由终止Reason。如果稍后监督人桥被其主管阻止Reason,则其调用Module:terminate(Reason,State)终止。

如果初始化失败,函数将返回{error,Error},其中Error是任何项,或者ignore

Module:terminate(Reason, State)

类型

监督人桥接器在即将终止时调用该功能。这是相反的,Module:init/1并停止子系统,并进行任何必要的清理。返回值被忽略。

Reasonshutdown如果主管桥由监管当局终止。如果主管桥终止因为AA联过程(除了子系统的主处理)已经与原因终止Term,然后Reason变成Term

State取自返回值Module:init/1

另见

supervisor(3)sys(3)