Current section
Files
Jump to
Current section
Files
lib/system/command_sup.ex
defmodule Extreme.System.CommandSup do
use Supervisor
alias Extreme.System, as: ExSys
def start_link(configuration_module, prefix, extreme_settings \\ nil),
do:
Supervisor.start_link(__MODULE__, {configuration_module, prefix, extreme_settings},
name: name(prefix)
)
def init({configuration_module, prefix, extreme_settings}) do
children =
if extreme_settings do
[
worker(Extreme, [extreme_settings, [name: extreme_name(prefix)]]),
worker(ExSys.EventStore, [
configuration_module,
extreme_name(prefix),
[name: ExSys.EventStore.name(prefix)]
])
]
else
[]
end
children = [supervisor(configuration_module, [prefix]) | children]
supervise(children, strategy: :one_for_one)
end
defp name(prefix),
do: "#{prefix |> to_string()}.CommandSup" |> String.to_atom()
defp extreme_name(prefix),
do: "#{prefix |> to_string()}.Extreme" |> String.to_atom()
end