Packages

A simple Elixir package that provides circuit breaker manager

Current section

Files

Jump to
virgil lib manager genserver supervisor.ex
Raw

lib/manager/genserver/supervisor.ex

defmodule Virgil.Manager.Genserver.Supervisor do
@moduledoc false
use Supervisor
alias Virgil.Config
alias Virgil.Manager.GenserverManager
def init(_arg) do
children = Enum.map(Config.registered_circuits(), &build_circuit_spec(&1.circuit()))
Supervisor.init(children, strategy: :one_for_one)
end
def start_link(init_arg),
do: Supervisor.start_link(__MODULE__, init_arg, name: __MODULE__)
defp build_circuit_spec(%_{name: name} = circuit),
do: Supervisor.child_spec({GenserverManager, circuit}, id: name)
end