supervisor_bridge(3)

MODULE
supervisor_bridge - A Behaviour for Connecting Processes To a Supervision Tree

DESCRIPTION

It can sometimes be useful to connect a process or a sub-system, which has not been designed with the supervision principles in mind, to a supervisor tree. This can be accomplished by using an instance of the supervisor_bridge behaviour. A supervisor bridge is a process which sits in between a supervisor and the sub-system. It behaves like a real supervisor to its own supervisor, but has a different interface than a real supervisor to the sub-system. Note, however, that it does not allow the use of the sophisticated code changing mechanisms to the sub-system.

An instance of the supervisor_bridge behaviour can be debugged with the module sys.

In the following, Module is the name of the callback module that implements the supervisor bridge behaviour.

EXPORTS

start_link(Module,StartArgs) -> {ok, Pid} | ignore | {error, Reason}
start_link(Name,Module,StartArgs) -> {ok, Pid} | ignore | {error, Reason}

    Types
        Name = {local, atom()} | {global, atom()}
        Module = atom()
        StartArgs = term()

    Starts a new supervisor bridge process synchronously. The function Module:init(StartArgs) is called (see below).

    If the supervisor bridge is started with Name, the name is registered locally or globally.

Callback Functions

The following functions should be exported from a supervisor_bridge callback module.

EXPORTS

Module:init(StartArgs) -> {ok, Pid, State} | ignore | {error, Reason}

    Types
        StartArgs = term()
        State = term()

    This function starts the sub-system and returns the Pid of the main process in the sub-system, and a State. The State can be any term and it is sent to the Module:terminate/2 function (see below).

Module:terminate(Reason, State) -> void()

    Types
        Reason = term()
        State = term()

    This function terminates the sub-system. The return value is ignored.

System Events

The supervisor_bridge behaviour generates the same system events as the gen_server behaviour. System events are handled by the sys module.

See Also

gen_server(3), supervisor(3), sys(3)

AUTHOR
Martin Bjorklund - mbj@erlang.ericsson.se