+++ /dev/null
--module(life_god).
--behaviour(supervisor).
-
-
-%% API
--export([start_link/3]).
-
-%% Callbacks
--export([init/1]).
-
-
-%% Helper macro for declaring children of supervisor
--define(CHILD(Type, I, Args), {I, {I, start_link, Args}, permanent, 5000, Type, [I]}).
-
-
-%% ============================================================================
-%% API
-%% ============================================================================
-
-start_link(X, Y, CellData) ->
- supervisor:start_link({local, ?MODULE}, ?MODULE, [X, Y, CellData]).
-
-
-%% ============================================================================
-%% Callbacks
-%% ============================================================================
-
-init([X, Y, CellData]) ->
- CellNames = [Name || {_, Name, _} <- CellData],
- RestartStrategy = {one_for_one, 1000000, 1},
- Cells = [spec_cell(Datum) || Datum <- CellData],
- Time = ?CHILD(worker, life_time, [X, Y, CellNames]),
- Children = Cells ++ [Time],
- {ok, {RestartStrategy, Children}}.
-
-
-spec_cell({_, Name, _}=Datum) ->
- M = life_cell,
- F = start_link,
- A = [Datum],
- {Name, {M, F, A}, permanent, 5000, worker, [M]}.