Current section
Files
Jump to
Current section
Files
src/gproc_sup.erl
%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% --------------------------------------------------
%% This file is provided to you under the Apache License,
%% Version 2.0 (the "License"); you may not use this file
%% except in compliance with the License. You may obtain
%% a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing,
%% software distributed under the License is distributed on an
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
%% KIND, either express or implied. See the License for the
%% specific language governing permissions and limitations
%% under the License.
%% --------------------------------------------------
%%----------------------------------------------------------------------
%% File : gproc_sup.erl
%% Purpose : GPROC top-level supervisor
%%----------------------------------------------------------------------
-module(gproc_sup).
-vsn("1.2.0").
-behaviour(supervisor).
%% External exports
-export([start_link/1]).
%% supervisor callbacks
-export([init/1]).
%%%----------------------------------------------------------------------
%%% API
%%%----------------------------------------------------------------------
start_link(Args) ->
supervisor:start_link({local, ?MODULE}, ?MODULE, Args).
%%%----------------------------------------------------------------------
%%% Callback functions from supervisor
%%%----------------------------------------------------------------------
%%----------------------------------------------------------------------
%% Func: init/1
%% Returns: {ok, {SupFlags, [ChildSpec]}} |
%% ignore |
%% {error, Reason}
%%----------------------------------------------------------------------
%% @spec(_Args::term()) -> {ok, {supervisor_flags(), child_spec_list()}}
%% @doc The main GPROC supervisor.
init(_Args) ->
%% Hint:
%% Child_spec = [Name, {M, F, A},
%% Restart, Shutdown_time, Type, Modules_used]
GProc =
{gproc, {gproc, start_link, []},
permanent, 2000, worker, [gproc]},
Dist = case application:get_env(gproc_dist) of
undefined -> [];
{ok, false} -> [];
{ok, Env} ->
[{gproc_dist, {gproc_dist, start_link, [Env]},
permanent, 2000, worker, [gproc_dist]}]
end,
Mon = {gproc_monitor, {gproc_monitor, start_link, []},
permanent, 2000, worker, [gproc_monitor]},
BCast = {gproc_bcast, {gproc_bcast, start_link, []},
permanent, 2000, worker, [gproc_bcast]},
Pool = {gproc_pool, {gproc_pool, start_link, []},
permanent, 2000, worker, [gproc_pool]},
{ok,{{one_for_one, 15, 60}, [GProc| Dist] ++ [Mon, BCast, Pool]}}.
%%%----------------------------------------------------------------------
%%% Internal functions
%%%----------------------------------------------------------------------