Current section
Files
Jump to
Current section
Files
lib/system/aggregate_pid_manager.ex
defmodule Extreme.System.AggregatePidManager do
use Supervisor
alias Extreme.System.AggregateRegistry, as: Registry
alias Extreme.System.AggregateSup
def start_link(prefix, aggregate_mod),
do: Supervisor.start_link __MODULE__, {prefix, aggregate_mod}, name: name(aggregate_mod)
def init({prefix, aggregate_mod}) do
children = [
worker( Registry, [Registry.name(aggregate_mod)]),
supervisor( AggregateSup, [prefix, aggregate_mod]),
]
supervise children, strategy: :one_for_all
end
def name(aggregate_mod), do: "#{aggregate_mod}.PidManager" |> String.to_atom
end