Current section

Files

Jump to
extreme_system lib system command_sup.ex
Raw

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